Tutoriales

[Solved] No es posible acceder al archivo de almacenamiento, autorización denegada Error en KVM Libvirt

Hoy tengo mi máquina virtual Arch Linux conmigo. empezado virsh start Comando y terminó con este error: Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied. En realidad, es una máquina Vagrant creada con el proveedor KVM Libvirt.

Luego intenté de nuevo usando la VM. para comenzar vagrant up Mando. También se mostró el mismo error.

 Bringing machine 'default' up with 'libvirt' provider…
 ==> default: Checking if box 'archlinux/archlinux' version '20210601.24453' is up to date…
 ==> default: Starting domain.
 There was an error talking to Libvirt. The error message is shown
 below:
 Call to virDomainCreateWithFlags failed: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied
Error al iniciar el dominio, sin acceso al archivo de almacenamiento, error con autorización denegada

Para estar seguro, intenté nuevamente iniciar la VM usando la aplicación Virt Manager GUI. Esta vez también devolvió el mismo error.

Error al iniciar el dominio, sin acceso al archivo de almacenamiento, autorización denegada Error en virt-manager
Error al iniciar el dominio, sin acceso al archivo de almacenamiento, autorización denegada Error en virt-manager

Todos los mensajes de error indican explícitamente que qemu El usuario no tiene permiso de lectura en el directorio de almacenamiento de Libvirt.

En este breve tutorial, le mostraré cómo solucionar «Error: No se pudo iniciar el dominio … error: No se puede acceder al archivo de almacenamiento …. (como uid: 107, gid: 107): Permiso denegado» en KVM Libvirt.

Se corrigió «No se puede acceder al archivo de almacenamiento, error de permiso denegado» en KVM Libvirt

Este es uno de los errores libvirt de KVM más comunes. Este error suele ocurrir después Cambiar la ruta del directorio de almacenamiento predeterminado de Libvirt.

Hace unos días agregué la ubicación de Libvirt a mi $HOME Directorio. Por eso recibo este error.

Podemos solucionarlo de dos formas.

Método 1:

Paso 1: Para editar /etc/libvirt/qemu.conf Archivo:

$ sudo nano /etc/libvirt/qemu.conf

Paso 2: Encuentra el user y group Pautas. De forma predeterminada, ambos están configurados en "root".

 [...] 
 Some examples of valid values are:
 #
 user = "qemu"   # A user named "qemu"
 user = "+0"     # Super user (uid=0)
 user = "100"    # A user named "100" or a user with uid=100
 #
 #user = "root"
 The group for QEMU processes run by the system instance. It can be
 specified in a similar way to user.
 #group = "root"
 [...]

Descomente ambas líneas y reemplácelas root con tu nombre de usuario y grupo con libvirt Como se muestra abajo:

 [...] 
 Some examples of valid values are:
 #
 user = "qemu"   # A user named "qemu"
 user = "+0"     # Super user (uid=0)
 user = "100"    # A user named "100" or a user with uid=100
 #
 user = "sk"
 The group for QEMU processes run by the system instance. It can be
 specified in a similar way to user.
 group = "libvirt"
 [...]
Configurar usuario y grupo para kvm libvirt
Configurar usuario y grupo para kvm libvirt

prensa CTRL+O y presione ENTER para guardar los cambios y presione CTRL+X para salir del archivo.

Paso 3: Empezar de nuevo libvirtd Servicio:

$ sudo systemctl restart libvirtd

Paso 4: Asegúrese de que el usuario sea miembro de. es libvirt Grupo. Si no es así, agregue el usuario. adicional libvirt Grupo con comando:

$ sudo usermod -a -G libvirt $(whoami)

Paso 5: Finalmente, inicie la VM:

$ virsh start

Si prefiere usar vagabundos, haga lo siguiente en su lugar:

$ vagrant up

Esta vez debería iniciarse la máquina virtual.

Paso 6: Verifique el estado de la máquina virtual:

$ virsh list

O,

$ vagrant status
Verifique el estado de la máquina virtual kvm libvirt
Verifique el estado de la máquina virtual kvm libvirt

Método 2:

Otra forma de solucionar el problema de los permisos libvirt de KVM es establecer el permiso ACL correcto en el directorio del grupo de almacenamiento libvirt. En mi caso, el directorio de mi grupo de almacenamiento está en $HOME Directorio.

Paso 1: Veamos los permisos actuales de ACL para el $HOME Directorio.

$ sudo getfacl -e /home/sk/

Salida de muestra:

 getfacl: Removing leading '/' from absolute path names
 file: home/sk/
 owner: sk
 group: sk
 user::rwx
 user:qemu:--x            #effective:--x
 group::---            #effective:---
 mask::--x
 other::---

Como puede ver en el resultado anterior, el qemu El usuario no tiene leer Autorización para la ubicación del pool de almacenamiento. En algunas distribuciones, el nombre de usuario puede ser libvirt-qemu.

Paso 2: Establecer permisos de lectura y ejecución para el usuario qemu con comando:

$ sudo setfacl -m u:qemu:rx /home/sk/

Reemplazar qemu y /home/sk/ contigo mismo.

Ahora el usuario de qemu ha leído y ejecutado permisos para el directorio del grupo de almacenamiento. Puedes comprobarlo con el comando:

$ sudo getfacl -e /home/sk/

Salida de muestra:

 getfacl: Removing leading '/' from absolute path names
 file: home/sk/
 owner: sk
 group: sk
 user::rwx
 user:qemu:r-x            #effective:--x
 group::---            #effective:---
 mask::--x
 other::---

Paso 3: Reinicie el servicio libvirtd:

$ sudo systemctl restart libvirtd

Ahora los invitados de Libvirt comenzarán sin ningún problema.

Conclusión

En esta guía, analizamos por qué recibimos el error «Acceso al permiso de archivo de almacenamiento no denegado» en KVM libvirt y cómo solucionarlo de dos formas diferentes en Linux.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba