KVM-Gast kann nicht auf 9p-Freigaben schreiben, die Nicht-Root gehören

14

Ich möchte einen vollständigen Schreibzugriff auf eine 9p-Freigabe für einen KVM-Gast einrichten. Sowohl der Host als auch der Gast haben dieselben Benutzer / Gruppen mit denselben IDs. Sowohl der Host als auch der Gast sollten in der Lage sein, mit denselben Benutzernamen auf die Freigabe zu schreiben, und ich möchte nicht unterscheiden, ob eine Datei vom Host oder vom Gast geschrieben wurde. Der KVM - Prozess läuft als root - ich Satz userund groupnach rootin /etc/libvirt/qemu.conf.

In der Gastdefinition auf dem Host ist die Freigabe wie folgt definiert:

<filesystem type='mount' accessmode='passthrough'>
  <source dir='/mnt/storage/data'/>
  <target dir='data'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</filesystem>

Im Gast wird die Freigabe bereitgestellt als:

mount -t 9p -o rw,trans=virtio,version=9p2000.L,msize=262144 data /mnt/data

Das Problem besteht darin, dass der Root-Benutzer im Gast nicht in Dateien / Ordner schreiben kann, die Nicht-Root-Benutzern auf dem Host gehören. Noch seltsamer ist, dass der Root des Gastes solche Dateien umbenennen und löschen kann. Das heißt, wenn ich auf dem Hostcomputer eine Datei als Benutzer ohne Rootberechtigung erstelle, kann ich sie einfach nicht als Rootberechtigung des Gasts bearbeiten, obwohl ich sie umbenennen und löschen kann!

Ich fand auch heraus, dass, wenn für einen Ordner, der auf dem Host unter Nicht-Root-Benutzern erstellt wurde, die Berechtigungen auf 777 festgelegt wurden, der Root des Gasts darauf schreiben kann (dh Dateien darin erstellen). Dies gilt jedoch nicht für Dateien. Sie können weiterhin nicht bearbeitet werden, unabhängig von den Berechtigungen.

Sowohl auf dem Host als auch auf dem Gast wird Linux Server 3.2.0-4-amd64 # 1 SMP Debian 3.2.51-1 x86_64 GNU / Linux ausgeführt. In Debian ist SELinux standardmäßig deaktiviert und ich habe es nicht aktiviert. Ich habe alle drei verfügbaren 9p-Zugriffsmodi ( passthrough, mappedund squash) ausprobiert - kein Unterschied.

Ich frage mich nur, ob ich irgendetwas optimieren kann, um es zum Laufen zu bringen, oder ist es nur ein Fehler?

Beachten Sie, dass hier ein ähnliches Problem gemeldet wird: Lese- / Schreibzugriff für Passthrough-Dateisysteme (9p) mit libvirt / qemu? Im Gegensatz zu diesem Fall habe ich jedoch 100% Schreibzugriff auf Dateien, deren Eigentümer root ist. Es handelt sich lediglich um Nicht-Root-Benutzerdateien, auf die ich nicht einmal schreiben kann, wenn ich auf dem Gast root bin.

Greendrake
quelle
2
Nur zur Information, ich habe das nie richtig hinbekommen und bin auf all diese Probleme gestoßen. Folglich wurden Passthrough-Implementierungen für das p9-Dateisystem in den letzten qemu / libvirt-Versionen als veraltet eingestuft.
Spooler
2
Ähnlich hier. Red Hat scheint zu glauben, dass 9p nicht für die Prime Time bereit ist .
Diagon

Antworten:

0

Können Sie zusätzliche Attribute des Dateisystems überprüfen, z. B. die von acl im freigegebenen Verzeichnis? Ich habe den Verdacht, dass eine Erlaubnis vorliegt.

asktyagi
quelle