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 user
und group
nach root
in /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
, mapped
und 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.