GNU/Linux >> Linux Esercitazione >  >> Linux

[Risolto] Impossibile accedere al file di archiviazione, autorizzazione negata Errore in KVM Libvirt

Oggi ho avviato la mia macchina virtuale Arch Linux utilizzando virsh start comando e si è verificato questo errore - 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 . In realtà è una macchina Vagrant creata con il provider KVM Libvirt.

Quindi, ho provato di nuovo ad avviare la VM usando vagrant up comando. Visualizzava anche lo stesso errore.

 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

Per sicurezza, ho provato ancora una volta ad avviare la VM dall'applicazione GUI Virt-manager. Anche questa volta ha restituito lo stesso errore.

Tutti i messaggi di errore dicono esplicitamente che il qemu l'utente non dispone dell'autorizzazione di lettura per la directory di archiviazione di Libvirt.

In questo breve tutorial, permettimi di mostrarti come correggere "errore:Impossibile avviare il dominio ... errore:Impossibile accedere al file di archiviazione .... (as uid:107, gid:107):Permesso negato" in KVM Libvirt .

Risolto il problema con "Impossibile accedere al file di archiviazione, errore di autorizzazione negata" in KVM Libvirt

Questo è uno degli errori comuni di KVM Libvirt. Questo errore si verifica in genere dopo la modifica del percorso della directory di archiviazione predefinita di Libvirt .

Alcuni giorni fa, ho spostato la posizione di archiviazione di Libvirt nel mio $HOME directory. Ecco perché ricevo questo errore.

Possiamo risolverlo in due modi.

Metodo 1:

Passaggio 1: Modifica /etc/libvirt/qemu.conf file:

$ sudo nano /etc/libvirt/qemu.conf

Passaggio 2: Trova l'user e group direttive. Per impostazione predefinita, entrambi sono impostati su "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"
 [...]

Decommenta entrambe le righe e sostituisci root con il tuo nome utente e raggruppa con libvirt come mostrato di seguito:

 [...] 
 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"
 [...]

Premi CTRL+O e premi ENTER per salvare le modifiche e premere CTRL+X per uscire dal file.

Passaggio 3: Riavvia libvirtd servizio:

$ sudo systemctl restart libvirtd

Passaggio 4: Assicurati che l'utente sia un membro di libvirt gruppo. In caso contrario, aggiungi l'utente a libvirt gruppo usando il comando:

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

Passaggio 5: Infine avvia la VM:

$ virsh start

Se preferisci usare vagrant, esegui invece questo:

$ vagrant up

Questa volta la macchina virtuale dovrebbe avviarsi.

Passaggio 6: Verifica lo stato della VM:

$ virsh list

Oppure,

$ vagrant status

Metodo 2:

Un altro modo per risolvere il problema dell'autorizzazione KVM Libvirt è impostare l'autorizzazione ACL corretta per la directory del pool di archiviazione Libvirt. Nel mio caso, la directory del mio pool di archiviazione si trova in $HOME directory.

Passaggio 1: Otteniamo le attuali autorizzazioni ACL per $HOME directory.

$ sudo getfacl -e /home/sk/

Risultato di esempio:

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

Come puoi vedere nell'output sopra, il qemu l'utente non ha letto autorizzazione alla posizione del lotto di memoria. In alcune distribuzioni, il nome utente potrebbe essere libvirt-qemu .

Passaggio 2: Imposta il permesso di lettura ed eseguibile per l'utente qemu usando il comando:

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

Sostituisci qemu e /home/sk/ con il tuo.

Ora, l'utente qemu ha l'autorizzazione di lettura ed eseguibile sulla directory del pool di archiviazione. Puoi verificarlo usando il comando:

$ sudo getfacl -e /home/sk/

Risultato di esempio:

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

Passaggio 3: Riavvia il servizio libvirtd:

$ sudo systemctl restart libvirtd

Ora le macchine guest di Libvirt si avvieranno senza alcun problema.

Conclusione

In questa guida, abbiamo discusso del motivo per cui riceviamo l'errore "impossibile accedere al permesso del file di archiviazione negato" in KVM libvirt e come risolverlo in due modi diversi in Linux.


Linux
  1. Errore "530:autorizzazione negata" quando l'utente accede al server vsftpd tramite ftp

  2. Utente non in grado di modificare crontab, errore:"/tmp/crontab.Lm34gsJV:autorizzazione negata"

  3. MySQL - ERRORE 1045 - Accesso negato

  4. Git non è in grado di creare il permesso del file negato

  5. ERRORE 1045 (28000):accesso negato per l'utente 'root'@'localhost' (utilizzando la password:YES)

Come risolvere l'errore MySQL:accesso negato all'utente [e-mail protetta]

Risoluzione dei problemi:errore MySQL/MariaDB n. 1044 e n. 1045 accesso negato all'utente

Apache non può accedere al file mentre ha l'autorizzazione?

Montare l'autorizzazione CIFS negata su Linux - Risolto!

errore di montaggio 13 =Autorizzazione negata

"Permesso negato" a un file che possiedo?