GNU/Linux >> LINUX-Kenntnisse >  >> Linux

[Gelöst] Zugriff auf Speicherdatei nicht möglich, Berechtigung verweigert Fehler in KVM Libvirt

Heute habe ich meine virtuelle Arch Linux-Maschine mit virsh start gestartet Befehl und endete mit diesem Fehler - 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 . Es ist eigentlich eine Vagrant-Maschine, die mit dem KVM Libvirt-Anbieter erstellt wurde.

Dann habe ich erneut versucht, die VM mit vagrant up zu starten Befehl. Derselbe Fehler wurde auch angezeigt.

 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

Nur um sicherzugehen, habe ich noch einmal versucht, die VM von der Virt-Manager-GUI-Anwendung aus zu starten. Auch dieses Mal wurde derselbe Fehler zurückgegeben.

Alle Fehlermeldungen sagen ausdrücklich, dass der qemu Benutzer hat keine Leseberechtigung für das Libvirt-Speicherverzeichnis.

Lassen Sie mich Ihnen in diesem kurzen Tutorial zeigen, wie Sie „error:Failed to start domain … error:Cannot access storage file …. (as uid:107, gid:107):Permission denied“ in KVM Libvirt beheben .

Fix „Zugriff auf Speicherdatei nicht möglich, Fehler „Zugriff verweigert““ in KVM Libvirt

Dies ist einer der häufigsten KVM-Libvirt-Fehler. Dieser Fehler tritt normalerweise nach dem Ändern des Pfads des Standardspeicherverzeichnisses von Libvirt auf .

Vor ein paar Tagen habe ich den Libvirt-Speicherort in mein $HOME verschoben Verzeichnis. Deshalb erhalte ich diesen Fehler.

Wir können es auf zwei Arten beheben.

Methode 1:

Schritt 1: Bearbeiten Sie /etc/libvirt/qemu.conf Datei:

$ sudo nano /etc/libvirt/qemu.conf

Schritt 2: Suchen Sie den user und group Richtlinien. Standardmäßig sind beide auf "root" gesetzt .

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

Kommentieren Sie beide Zeilen aus und ersetzen Sie root mit Ihrem Benutzernamen und Gruppe mit libvirt wie unten gezeigt:

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

Drücken Sie CTRL+O und drücken Sie ENTER um die Änderungen zu speichern und drücken Sie CTRL+X um die Datei zu verlassen.

Schritt 3: Starten Sie libvirtd neu Dienst:

$ sudo systemctl restart libvirtd

Schritt 4: Bitte stellen Sie sicher, dass der Benutzer Mitglied der libvirt ist Gruppe. Wenn nicht, fügen Sie den Benutzer zu libvirt hinzu Gruppe mit dem Befehl:

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

Schritt 5: Starten Sie abschließend die VM:

$ virsh start

Wenn Sie vagrant bevorzugen, führen Sie stattdessen Folgendes aus:

$ vagrant up

Diesmal sollte die virtuelle Maschine starten.

Schritt 6: Überprüfen Sie den VM-Status:

$ virsh list

Oder,

$ vagrant status

Methode 2:

Die andere Möglichkeit, das KVM-Libvirt-Berechtigungsproblem zu beheben, besteht darin, die richtige ACL-Berechtigung für das Libvirt-Speicherpoolverzeichnis festzulegen. In meinem Fall befindet sich mein Speicherpoolverzeichnis in $HOME Verzeichnis.

Schritt 1: Lassen Sie uns die aktuellen ACL-Berechtigungen für $HOME abrufen Verzeichnis.

$ sudo getfacl -e /home/sk/

Beispielausgabe:

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

Wie Sie in der obigen Ausgabe sehen, ist die Datei qemu Benutzer hat nicht gelesen Berechtigung für den Speicherpoolstandort. In einigen Distributionen könnte der Benutzername libvirt-qemu sein .

Schritt 2: Legen Sie die Lese- und Ausführungsberechtigung für den Benutzer qemu fest mit Befehl:

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

Ersetzen Sie qemu und /home/sk/ mit Ihren eigenen.

Jetzt hat der qemu-Benutzer Lese- und Ausführungsberechtigung für das Speicherpoolverzeichnis. Sie können es mit folgendem Befehl überprüfen:

$ sudo getfacl -e /home/sk/

Beispielausgabe:

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

Schritt 3: Starten Sie den libvirtd-Dienst neu:

$ sudo systemctl restart libvirtd

Jetzt starten die Libvirt-Gastmaschinen ohne Probleme.

Schlussfolgerung

In diesem Handbuch haben wir besprochen, warum wir in KVM libvirt den Fehler „Zugriff auf Speicherdateiberechtigung verweigert“ erhalten und wie man ihn auf zwei verschiedene Arten in Linux beheben kann.


Linux
  1. Fehler „530:Berechtigung verweigert“, wenn sich der Benutzer über FTP beim vsftpd-Server anmeldet

  2. Benutzer kann Crontab nicht bearbeiten, Fehler:„/tmp/crontab.Lm34gsJV:Berechtigung verweigert“

  3. MySQL - FEHLER 1045 - Zugriff verweigert

  4. Git kann keine Dateiberechtigung verweigert erstellen

  5. ERROR 1045 (28000):Zugriff verweigert für Benutzer 'root'@'localhost' (mit Passwort:YES)

So lösen Sie den MySQL-Fehler:Zugriff für Benutzer verweigert [email protected]

So beheben Sie den Fehler – ModSecurity:Zugriff verweigert mit Code 44 [Apache]

(Gelöst) Mailbox /var/mail/user kann nicht geöffnet werden:Permission denied error in Linux

Fehlerbehebung:MySQL/MariaDB-Fehler Nr. 1044 und Nr. 1045 Zugriff für Benutzer verweigert

Apache kann nicht auf die Datei zugreifen, obwohl sie die Berechtigung hat?

Mount-CIFS-Berechtigung unter Linux verweigert – behoben!