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
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.
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.mkdir -p demo-permisos
echo "Contenido de prueba" > demo-permisos/archivo.txt
ls -l demo-permisos/archivo.txt
stat demo-permisos/archivo.txt
Observar:
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?
Algunos sistemas de archivos permiten atributos adicionales.
lsattr demo-permisos/archivo.txt
Ejemplos:
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.
Son mecanismos de control obligatorio.
Linux puede decidir si un proceso tiene permitido acceder a un archivo según:
En sistemas con SELinux:
getenforce
ls -Z archivo.txt
sestatus
No todas las distribuciones utilizan SELinux.
Algunas utilizan AppArmor como mecanismo equivalente.
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.
Un archivo puede tener:
Esto permite compartir archivos sin duplicar necesariamente sus datos.
nombre A ──┐
├──→ inode ──→ bloques de datos
nombre B ──┘
Los dos nombres apuntan al mismo inode.
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.
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.
ls -li
stat original.txt
stat enlace-duro.txt
stat enlace-simbolico.txt
Observar:
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.
Un respaldo permite recuperar información después de:
El respaldo debe poder restaurarse y verificarse.
Copia los cambios desde el último respaldo completo.
Copia los cambios desde el último respaldo realizado.
Copia todos los datos seleccionados.
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.
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.
RAID combina varios discos para mejorar una o más características:
RAID no reemplaza un respaldo.
Los datos se distribuyen entre varios discos.
Bloque 0 → disco 1
Bloque 1 → disco 2
Bloque 2 → disco 1
Bloque 3 → disco 2
Ventaja:
Limitación:
Los datos se duplican.
datos → disco 1
└→ disco 2
Ventaja:
Costo:
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 puede ayudar ante una falla de disco.
No necesariamente protege contra:
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.
Linux puede integrar sistemas de archivos diferentes:
La interfaz de archivos puede mantenerse uniforme aunque cambie la implementación.
df -T
lsblk -f
findmnt
Observar:
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:
Analizaremos espacio total, espacio utilizado, espacio disponible, punto de montaje y efecto de escribir datos.
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.
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.
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
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.
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
prueba.bin?df -hT que no aporta ls -lh?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.
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.
cliente ───── red ───── servidor
│ │
│ monta │ exporta
▼ ▼
jerarquía local directorio remoto
El cliente accede a un directorio que está almacenado en otro equipo.
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.
Además de los problemas habituales aparecen:
La interfaz puede parecer local, pero el costo y los riesgos son diferentes.
chmod permitir un acceso que SELinux prohíbe?df -T?Un sistema de archivos combina: