viernes, 27 de marzo de 2026

Solución de Denegaciones de SELinux para virtquemud (acceso setattr) en AlmaLinux/RHEL



Si utilizas libvirt (KVM/QEMU) para virtualizar en Fedora AlmaLinux, Rocky Linux o RHEL, es posible que estés viendo alertas frecuentes de SELinux al encender y apagar las máquinas virtuales. Al revisar las alertas de SELinux (sealert o /var/log/audit/audit.log), probablemente verás mensajes que indican que rpc-virtqemud está impidiendo el acceso a setattr en las imágenes de disco .qcow2.

A continuación, te explico por qué ocurre esto y cómo solucionarlo sin necesariamente desactivar SELinux.


Discrepancia en las etiquetas

SELinux es una capa de seguridad que utiliza etiquetas para determinar si un proceso (como el hipervisor QEMU) puede acceder a un archivo. El problema comienza cuando tenemos imágenes de disco .qcow2 en una ruta personal (diferente del pool por defecto ubicado /var/lib/libvirt/images) por lo que éstos archivos no están etiquetados correctamente (suelen tener etiquetas como admin_home_t o unlabeled_t).

El hipervisor espera que el archivo tenga una etiqueta específica: virt_image_t. Cuando las etiquetas no coinciden, SELinux bloquea el acceso, incluso si los permisos estándar (DAC) son extremadamente permisivos (chmod 777).



Reetiquetar el directorio

El SELinux Troubleshooter recomienda varias cosas, entre ellas reetiquetar el sistema de archivos completo (touch /.autorelabel), cosa que es muy extrema. También sugiere reetiquetar el archivo .qcow2, pero cuando son varios lo conveniente y funcional es hacer ese proceso al directorio completo.

Lo primero que haremos es agregar el directorio a la política de SELinux usando el comando semanage e indicándole la ruta a dicho directorio:

fraterneo@rainbow:~$ sudo semanage fcontext -a -t virt_image_t "~/KVM/(/.*)?"

Ahora aplicamos la etiqueta de manera recursiva al directorio en cuestión:

fraterneo@rainbow:~$ sudo restorecon -Rv ~/KVM/

Puedes confirmar que el proceso fue exitoso visualizando las etiquetas de SELinux:

fraterneo@rainbow:~$ ls -lZ ~/KVM/

Un paso no obligatorio pero muy recomendado es darle al usuario y grupo qemu la propiedad sobre los arhivos de imágenes:

fraterneo@rainbow:~$ sudo chown qemu:qemu ~/KVM/*.qemu

Para aplicarlo a tu contexto solo debes reemplazar ~/KVM por la ruta personalizada que usas para tus imágenes de máquinas virtuales.


Si tienes preguntas sobre virtualización en GNU Linux o resolución de problemas en SELinux, déjame saber en los comentarios...



Artículos relacionados



Widget by Hoctro | Jack Book

0 comments:

Publicar un comentario