kvm-fedora-denied

Después de las últimas actualizaciones de políticas de SELinux en Fedora 24, al arrancar ó crear una Máquina Virtual (vm) en virt-manager, envía el mensaje de error: virt-manager error: selinux policy denies access at starting domain.

En los logs encontramos:

Aug 23 21:45:45 isengard.mx.redhat.com systemd[1]: Started Network Manager Script Dispatcher Service.
-- Subject: Unit NetworkManager-dispatcher.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit NetworkManager-dispatcher.service has finished starting up.
-- 
-- The start-up result is done.
Aug 23 21:45:45 isengard.mx.redhat.com dbus-daemon[818]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Aug 23 21:45:45 isengard.mx.redhat.com kernel: virbr0: port 1(vnet0) entered disabled state
Aug 23 21:45:45 isengard.mx.redhat.com kernel: device vnet0 left promiscuous mode
Aug 23 21:45:45 isengard.mx.redhat.com audit: ANOM_PROMISCUOUS dev=vnet0 prom=0 old_prom=256 auid=4294967295 uid=107 gid=107 ses=4294967295
Aug 23 21:45:45 isengard.mx.redhat.com kernel: virbr0: port 1(vnet0) entered disabled state
Aug 23 21:45:45 isengard.mx.redhat.com virtlogd[10776]: End of file while reading data: Input/output error
Aug 23 21:45:45 isengard.mx.redhat.com libvirtd[913]: Cannot open log file: '/var/log/libvirt/qemu/win7-2.log': Device or resource busy
Aug 23 21:45:45 isengard.mx.redhat.com virtlogd[10776]: Cannot open log file: '/var/log/libvirt/qemu/win7-2.log': Device or resource busy
Aug 23 21:45:45 isengard.mx.redhat.com virtlogd[10776]: End of file while reading data: Input/output error
Aug 23 21:45:45 isengard.mx.redhat.com libvirtd[913]: SELinux policy denies access.
Aug 23 21:45:45 isengard.mx.redhat.com systemd-machined[10793]: Failed to start machine scope: Access denied

Si configuramos SELinux en modo permisivo, la vm arranca correctamente y también nos permite crear nuevas vm’s.

Obviamente, la solución más rápida es deshabilitar SELinux, pero como apoyamos la campaña de Dan Walsh, después una rápida googleada encontré el workaround:

1. Hacer downgrade a la política de SELinux

[root@isengard ~]# dnf downgrade selinux-policy-targeted selinux-policy firewalld firewalld-filesystem python3-firewall

2. Generar política temporal que permita el uso de kvm

Crear archivo type enforcement

[root@isengard ~]# vi /tmp/virt-manager-temp.te 
module virt-manager-temp 1.0;

require {
 type systemd_machined_t;
 type init_t;
 class system start;
}

#============= systemd_machined_t ==============
allow systemd_machined_t init_t:system start;
[root@isengard ~]#

Compilamos el módulo

[root@isengard ~]# checkmodule -M -m -o virt-manager-temp.mod virt-manager-temp.te
[root@isengard ~]# semodule_package -o virt-manager-temp.pp -m virt-manager-temp.mod

Lo cargamos en la política

[root@isengard ~]# semodule -i virt-manager-temp.pp

Después de aplicar cualquier de estos procedimientos, virt-manager ya es capaz de funcionar con SELinux.

En el bugzilla mencionan que la actualización de la política se encuentra en los repositorios de testing:

[root@isengard ~]# dnf update selinux-policy --enablerepo=updates-testing

Sin embargo, aún no esta disponible:

[root@isengard ~]# dnf update selinux-policy --enablerepo=updates-testing
Fedora 24 - x86_64 - Test Updates 229 kB/s | 2.8 MB 00:12 
Last metadata expiration check: 0:00:06 ago on Tue Aug 23 21:55:43 2016.
Dependencies resolved.
Nothing to do.
Complete!
[root@isengard ~]# dnf list | grep selinux-policy
selinux-policy.noarch             3.13.1-191.12.fc24 @updates
selinux-policy-targeted.noarch    3.13.1-191.12.fc24 @updates
selinux-policy-devel.noarch       3.13.1-191.12.fc24 updates 
selinux-policy-doc.noarch         3.13.1-191.12.fc24 updates 
selinux-policy-minimum.noarch     3.13.1-191.12.fc24 updates 
selinux-policy-mls.noarch         3.13.1-191.12.fc24 updates 
selinux-policy-sandbox.noarch     3.13.1-191.12.fc24 updates 
[root@isengard ~]#

Referencias:

Bug 1368745 – selinux-policy-3.13.1-191.12.fc24 prevents virtual machine usage

Espero les sirva…