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

  1. Creación y configuración del usuario de compilación sin privilegios (builder).

  2. Aplicación del principio de mínimo privilegio mediante la delegación estricta de comandos de administración de módulos (sudoers).

  3. Establecimiento de la conectividad SSH sin contraseña entre la WS host (raul-ipa) y el entorno de compilación.

  4. Definición del flujo de trabajo Git bajo demanda (pull-on-demand) para la transferencia de código.

  5. Arquitectura de almacenamiento compartimentado para la segregación de salidas y registros del sistema.

Configuración del Usuario de Compilación

  1. Creación del Usuario: Se habilita un usuario dedicado en el entorno buildlab para evitar la ejecución de procesos de compilación con privilegios de superusuario:

    useradd -m -s /bin/bash builder
    
  2. Delegación de Privilegios para Operaciones del Núcleo: Para permitir la prueba e inspección de controladores sin conceder acceso root completo, 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:

  1. 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 usuario builder. Permite evaluar los artefactos de manera aislada sin requerir la ejecución de la máquina virtual.

  2. 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

  1. 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.

  2. 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:

  1. 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
    
  2. 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
    
  3. 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.