Sistemas · Bloque II · SYS-L-201 · Laboratorio · EC
Observar rutas, inodos, descriptores, df y du
Un contenedor preparado contiene enlaces, un subárbol montado y un proceso que mantiene abierto un archivo cuyo nombre puede retirarse.
Contenido de la actividad
EC · Contenedor rootless desechable con volumen interno, sin mounts del host.
Capacidad
Contrastar el modelo de archivos con observaciones reproducibles sin tocar el filesystem del host.
Enunciado
Arranca el intento, captura el estado inicial, ejecuta las transiciones permitidas y explica qué permanece accesible desde cada perspectiva.
Estado inicial
- El paquete genera un attempt-id y un contenedor etiquetado.
- Todos los datos viven en la capa escribible y volúmenes internos del intento.
- El launcher expone start, inspect, unlink, reset y destroy.
Límites del sandbox
- Extrae el paquete fuera del checkout y usa Podman rootless, Docker rootless o Docker Desktop.
- No uses sudo, no montes rutas del host y no retires contenedores ajenos al attempt-id.
- Antes de reset o destroy, comprueba la etiqueta y el identificador exacto creados por el launcher.
Fases de trabajo
1. Preparar y verificar alcance
Asegurar que el runtime y el objetivo son desechables.
- Extrae el paquete en un directorio temporal.
- Ejecuta preflight y conserva attempt-id.
- Comprueba que no hay mounts del host.
./lab preflight
./lab start
./lab inspect2. Observar identidad y espacio
Relacionar nombres, objetos y contabilidad.
- Compara stat de los nombres preparados.
- Inspecciona readlink y /proc/PID/fd.
- Registra df y du antes de modificar.
3. Retirar un nombre
Observar unlink con un descriptor vivo.
- Formula una predicción.
- Ejecuta la transición acotada.
- Repite las observaciones y explica diferencias.
./lab unlink
./lab inspect4. Reiniciar
Probar recuperabilidad.
- Ejecuta reset.
- Comprueba el estado inicial.
- Destruye el intento y conserva la salida mínima.
./lab reset
./lab destroyEvidencia que debes conservar
- Tabla comparativa antes/después.
- Interpretación de descriptor, link count, df y du.
- Evidencia de alcance, reset y destrucción.
Criterios de aceptación
- El intento vive fuera del checkout y usa runtime sin privilegios.
- Relaciona al menos dos nombres con el mismo objeto y un enlace simbólico con su destino.
- Demuestra que un descriptor puede conservar acceso tras unlink.
- Explica una diferencia entre df y du sin convertirla en regla universal.
- Recrea o destruye solo el contenedor etiquetado del intento.
Decisiones abiertas
- Elegir salida tabular o narrativa.
- Seleccionar solo los campos de stat que sostienen la explicación.
- Añadir una observación de mountinfo si mejora el análisis.
Materiales
- Paquete de laboratorio SYS-L-201Launcher validado, Containerfile, fixture y plantilla de expediente.
- Expediente SYS-L-201Plantilla para el intento y la tabla antes/después.
Se guarda solo en este navegador. Puedes descargarlo para enviarlo a Codex junto con los materiales que hayas completado.
Sin borrador guardado.
Revisión y reinicio
Revisión: Codex debe comparar la evidencia con estos criterios, señalar primero el supuesto no demostrado y proponer una sola comprobación siguiente. No hay una solución oficial publicada.
Reinicio: Ejecuta `./lab reset` o `./lab destroy`; el launcher valida etiqueta y attempt-id antes de retirar el contenedor.
Pistas graduadas
Pista 1 · Identidad
- Compara device e inode.
- El texto de la ruta no identifica por sí solo el objeto.
Pista 2 · Descriptor
- Busca el enlace `(deleted)` en /proc.
- Pregunta cuándo se libera la última referencia.
Pista 3 · Contabilidad
- df consulta el filesystem.
- du recorre nombres accesibles; anota el alcance de ambos.