GNU/Linux >> Znalost Linux >  >> Linux

[Vyřešeno] Nelze získat přístup k souboru úložiště, oprávnění odepřeno Chyba v KVM Libvirt

Dnes jsem spustil svůj virtuální stroj Arch Linux pomocí virsh start příkaz a skončil s touto chybou - 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 . Je to vlastně stroj Vagrant vytvořený s poskytovatelem KVM Libvirt.

Potom jsem znovu zkusil spustit virtuální počítač pomocí vagrant up příkaz. Také se zobrazila stejná chyba.

 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

Pro jistotu jsem ještě jednou zkusil spustit VM z GUI aplikace Virt-manager. Tentokrát také vrátil stejnou chybu.

Všechny chybové zprávy výslovně říkají, že qemu uživatel nemá oprávnění ke čtení do adresáře úložiště Libvirt.

V tomto krátkém tutoriálu mi dovolte, abych vám ukázal, jak opravit "chybu:Nepodařilo se spustit doménu ... chyba:Nelze získat přístup k souboru úložiště .... (jako uid:107, gid:107):Oprávnění odepřeno" v KVM Libvirt .

Oprava „Nelze získat přístup k souboru úložiště, chyba byla odepřena“ v KVM Libvirt

Toto je jedna z běžných chyb KVM Libvirt. Tato chyba se obvykle objeví po změně cesty k výchozímu adresáři úložiště Libvirt .

Před několika dny jsem přesunul úložiště Libvirt do svého $HOME adresář. Proto se mi zobrazuje tato chyba.

Můžeme to opravit dvěma způsoby.

Metoda 1:

Krok 1: Upravte /etc/libvirt/qemu.conf soubor:

$ sudo nano /etc/libvirt/qemu.conf

Krok 2: Najděte user a group směrnice. Ve výchozím nastavení jsou oba nastaveny na "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"
 [...]

Odkomentujte oba řádky a nahraďte root s vaším uživatelským jménem a skupinou s libvirt jak je uvedeno níže:

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

Stiskněte CTRL+O a stiskněte ENTER pro uložení změn a stiskněte CTRL+X pro ukončení souboru.

Krok 3: Restartujte libvirtd služba:

$ sudo systemctl restart libvirtd

Krok 4: Ujistěte se prosím, že uživatel je členem libvirt skupina. Pokud ne, přidejte uživatele do libvirt seskupit pomocí příkazu:

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

Krok 5: Nakonec spusťte VM:

$ virsh start

Pokud dáváte přednost použití vagrant, spusťte místo toho toto:

$ vagrant up

Tentokrát by se měl spustit virtuální počítač.

Krok 6: Zkontrolujte stav virtuálního počítače:

$ virsh list

Nebo,

$ vagrant status

Metoda 2:

Dalším způsobem, jak vyřešit problém s oprávněním KVM Libvirt, je nastavení správného oprávnění ACL pro adresář úložiště Libvirt. V mém případě se můj adresář úložiště nachází v $HOME adresář.

Krok 1: Pojďme získat aktuální oprávnění ACL k $HOME adresář.

$ sudo getfacl -e /home/sk/

Ukázkový výstup:

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

Jak vidíte ve výše uvedeném výstupu, qemu uživatel nečetl povolení k umístění úložiště. V některých distribucích může být uživatelské jméno libvirt-qemu .

Krok 2: Nastavte oprávnění ke čtení a ke spuštění pro uživatele qemu pomocí příkazu:

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

Nahraďte qemu a /home/sk/ s vlastními.

Nyní má uživatel qemu oprávnění ke čtení a ke spuštění v adresáři fondu úložiště. Můžete to ověřit pomocí příkazu:

$ sudo getfacl -e /home/sk/

Ukázkový výstup:

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

Krok 3: Restartujte službu libvirtd:

$ sudo systemctl restart libvirtd

Nyní se hostující stroje Libvirt spustí bez problémů.

Závěr

V této příručce jsme diskutovali o tom, proč se nám v KVM libvirt zobrazuje chyba „není možné získat oprávnění k souboru úložiště odepřeno“ a jak ji opravit dvěma různými způsoby v Linuxu.


Linux
  1. MySQL - CHYBA 1045 - Přístup odepřen

  2. CHYBA 1045 (28000):Přístup odepřen uživateli 'root'@'localhost' (pomocí hesla:ANO)

  3. povolení docker.sock odepřeno

  1. Jak opravit chybu – ModSecurity:Přístup odepřen s kódem 44 [Apache]

  2. pip freeze vrací chybu:Oprávnění odepřeno:hg

  3. mysql (mariadb) ERROR 1698 (28000):Přístup odepřen uživateli 'root'@'localhost'

  1. Chyba Přístup odepřen, potřebujete oprávnění PROCESS [MySQL]

  2. Chyba „530:oprávnění odepřeno“, když se uživatel přihlásí k serveru vsftpd přes ftp

  3. Uživatel nemůže upravit crontab, chyba:„/tmp/crontab.Lm34gsJV:Permission denied“