Fase 2: Entorno de Usuario y Metodología de Trabajo
Resumen de la Fase
En esta fase se establece el entorno operativo sin privilegios dentro de la máquina virtual buildlab y se define el flujo de sincronización de código fuente desde el host de desarrollo (WS). Se adopta una metodología de integración semiautomática basada en Git para garantizar un control riguroso sobre los ciclos de compilación y prueba de los controladores del núcleo, complementada con una arquitectura de almacenamiento compartimentada para aislar los artefactos y los registros de compilación.
Objetivos Técnicos
Creación y configuración del usuario de compilación sin privilegios (
builder).Aplicación del principio de mínimo privilegio mediante la delegación estricta de comandos de administración de módulos (
sudoers).Establecimiento de la conectividad SSH sin contraseña entre la WS host (
raul-ipa) y el entorno de compilación.Definición del flujo de trabajo Git bajo demanda (pull-on-demand) para la transferencia de código.
Arquitectura de almacenamiento compartimentado para la segregación de salidas y registros del sistema.
Configuración del Usuario de Compilación
Creación del Usuario: Se habilita un usuario dedicado en el entorno
buildlabpara evitar la ejecución de procesos de compilación con privilegios de superusuario:useradd -m -s /bin/bash builder
Delegación de Privilegios para Operaciones del Núcleo: Para permitir la prueba e inspección de controladores sin conceder acceso
rootcompleto, se parametriza la directiva en/etc/sudoers.d/builder-kernel:builder ALL=(ALL) NOPASSWD: /usr/sbin/insmod, /usr/sbin/rmmod, /usr/bin/dmesg, /usr/sbin/modinfo
Se aplican los permisos estrictos al archivo de configuración:
chmod 0440 /etc/sudoers.d/builder-kernel
Segregación y Arquitectura de Almacenamiento
Para garantizar la seguridad operativa, prevenir la saturación de la partición raíz y permitir la inspección offline de los datos del laboratorio, se implementa una separación estricta mediante volúmenes dedicados sobre el pool de almacenamiento VDO de la infraestructura:
Volumen de Artefactos (``/mnt/build-output``): * Dimensionamiento: 5 GB. * Propósito: Almacenamiento exclusivo de módulos compilados (
.ko) y binarios de prueba generados por el usuariobuilder. Permite evaluar los artefactos de manera aislada sin requerir la ejecución de la máquina virtual.Volumen de Registros (``/mnt/build-logs``): * Dimensionamiento: 5 GB. * Propósito: Centralización de las trazas de compilación, salidas de ejecución y registros del kernel para auditoría y depuración sin comprometer el espacio del sistema base.
Integración y Conectividad SSH / Git
Intercambio de Claves SSH: Se configura la autenticación mediante par de claves públicas para el usuario
builder, permitiendo la sincronización de repositorios desde el entorno del host (raul-ipa) sin intervención interactiva de contraseñas.Modelo de Sincronización Semiautomática (Opción B): El código fuente del controlador se mantiene y edita en la estación de trabajo principal. La máquina virtual opera como cliente remoto:
Edición y Control de Versiones: Los cambios se confirman localmente en la WS.
Sincronización Bajo Demanda: Desde la VM
buildlab, el usuario ejecuta la actualización del repositorio previo a la compilación:git pull origin main
Delegación de Firma y Validación de Módulos (/etc/sudoers.d/builder-kernel)
Las claves de firma se custodian en /etc/secureboot/ bajo el dominio exclusivo de root. Para permitir que el usuario builder firme los módulos compilados sin exponer credenciales de superusuario, se expone un enlace simbólico en /usr/bin/kmod-sign-file y se autoriza en la directiva de sudoers:
Ajuste de Permisos y Enlace:
chown -R root:root /etc/secureboot chmod 0700 /etc/secureboot chmod 0600 /etc/secureboot/buildlab.priv chmod 0644 /etc/secureboot/buildlab.der ln -s /usr/src/kernels/$(uname -r)/scripts/sign-file /usr/bin/kmod-sign-file
Directiva de Privilegios (/etc/sudoers.d/builder-kernel):
builder ALL=(ALL) NOPASSWD: /usr/sbin/insmod, /usr/sbin/rmmod, /usr/bin/dmesg, /usr/sbin/modinfo, /usr/bin/kmod-sign-file
Ciclo Completo de Firma, Carga y Descarga:
sudo kmod-sign-file sha256 /etc/secureboot/buildlab.priv /etc/secureboot/buildlab.der hello.ko sudo insmod hello.ko sudo dmesg | tail -n 5 sudo rmmod hello sudo dmesg | tail -n 5
Estado del Entorno
Con la infraestructura de usuarios, conectividad y la compartimentación de almacenamiento desplegada, el laboratorio queda preparado para la sincronización del repositorio y la ejecución del primer ciclo de compilación de controladores del núcleo.