Wie kann ich Dateien im bereitgestellten freigegebenen Ordner speichern?

18

Ich verwende eine virtuelle Fedora Workstation-Maschine auf einem Ubuntu-Host.
Ich habe einen Ordner /home/cl/shareim Gast angelegt und den freigegebenen Ordner /media/cl/system/virtual/shareals root gemountet. Befolgen Sie dazu die Anweisungen von linux-kvm :

mount -t 9p -o trans=virtio,version=9p2000.L /host /home/cl/share

Ich kann von freigegebenen Ordnern aus auf Dateien und Ordner zugreifen (diese lesen), aber nicht darauf schreiben.

Ein Beispiel: Ich versuche, die Datei mount-share.txtim Ordner zu speichern /home/cl/share.

Beide Ordner (Host und Gast) haben Lese- und Schreibrechte, trotzdem erhalte ich die Fehlermeldung

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Host-Betriebssystem: Ubuntu 15.10 Desktop 64-Bit
  • Gastbetriebssystem: Fedora 23 Workstation 64-Bit
  • Virtualisierungssoftware: qemu qemu-kvm virt-manager
  • Standort des Hostsystems: 1. integrierte SSD - ext4-Format
  • Virtueller Speicherort: 2. eingebaute Festplatte - NTFS-Format
  • Speicherort für freigegebene Ordner: 2. integrierte Festplatte - NTFS-Format

virt-manager

Wie kann ich ein Verzeichnis zwischen Gast und Host freigeben und dem Gast Lese- und Schreibzugriff gewähren?

sudo chmod a+x /media/clund sudo chmod -R 777 /mediahat die Situation nicht geändert.

Gastsystem:

ls -la /home/cl/share  
total 16  
drwxrwxrwx.  1 cl cl 4096 20. Jan 14:41 .  
drwx------. 18 cl cl 4096 24. Jan 19:11 ..  
drwxrwxrwx.  1 cl cl 4096 17. Dez 09:49 fedora  
drwxrwxrwx.  1 cl cl    0  5. Jan 11:43 solus  
drwxrwxrwx.  1 cl cl    0  6. Jan 12:10 ubuntu  
drwxrwxrwx.  1 cl cl 4096 24. Jan 16:58 various    

stat /home/cl/share  
  File: ‘/home/cl/share’  
  Size: 4096         Blocks: 8          IO Block: 4096   directory  
Device: 25h/37d    Inode: 135       Links: 1  
Access: (0777/drwxrwxrwx)  Uid: ( 1000/     cl)   Gid: ( 1000/      cl)  
Access: 2016-01-27 10:11:12.566303000 +0100  
Modify: 2016-01-26 21:34:48.647707300 +0100  
Change: 2016-01-26 21:34:48.647707300 +0100  
 Birth: -  

Host-System:

ls -ld /media /media/cl/ /media/cl/system /media/cl/system/virtual/ /media/cl/system/virtual/share  
drwxr-xr-x  3 root root 4096 Okt 22 16:06 /media  
drwxr-x---+ 6 root root 4096 Jan 24 10:49 /media/cl/  
drwxrwxrwx  1 cl   cl   4096 Jan 19 15:28 /media/cl/system  
drwxrwxrwx  1 cl   cl   4096 Jan 22 13:43 /media/cl/system/virtual/  
drwxrwxrwx  1 cl   cl   4096 Jan 20 14:41 /media/cl/system/virtual/share  

getfacl /media/cl/  
getfacl: Removing leading '/' from absolute path names  
# file: media/cl/  
# owner: root  
# group: root  
user::rwx  
user:libvirt-qemu:--x  
user:cl:r-x  
group::---  
mask::r-x  
other::---

ps aux | grep virt
root       988  0.0  0.2 1207024 39888 ?       Ssl  12:48   0:01 /usr/sbin/libvirtd  
libvirt+  1204  0.0  0.0  45268  2720 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
root      1207  0.0  0.0  45240   368 ?        S    12:48   0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper  
cl        4204  0.0  0.0  15184  2532 pts/2    S+   14:06   0:00 grep --color=auto virt
cl-netbox
quelle
Warum verwenden Sie NTFS für die gemeinsame Nutzung zwischen zwei Linux-Systemen? Haben Sie das gleiche Setup mit einem nativen Dateiformat versucht?
Klaatu von Schlacker
2
@KlaatuvonSchlacker: Die zweite Festplatte enthält alles, was nicht mit dem Betriebssystem zusammenhängt und ist mit ntfs formatiert, um flexibel zu sein, falls ich mit anderen Betriebssystemen wie Windows auf die Daten zugreifen möchte. Wenn ich VirtualBox für die Virtualisierung verwende, funktioniert alles in Bezug auf die Ordnerfreigabe ordnungsgemäß.
Cl-Netbox
Hinsichtlich der Fehlermeldung beim Versuch, in das Dateisystem zu schreiben: Tritt diese Fehlermeldung auf, wenn Sie versuchen, vom Host aus zu schreiben, oder nur, wenn Sie versuchen, vom Gast aus zu schreiben?
Wildcard
@Wildcard: Ich erhalte die Fehlermeldung, wenn ich versuche, etwas aus dem Gast heraus zu schreiben (zu speichern).
Cl-Netbox

Antworten:

14

Ich konnte das Problem auf meinem System reproduzieren.
Ihr Hauptproblem sind die ACL-Einschränkungen Ihres Hosts.
Aus diesem Grund ändern Sie die ACL-Attribute des libvirt-qemuBenutzers:

sudo setfacl -R -m u:libvirt-qemu:rwx /media/cl

Ändern Sie die ModeEinstellungen für Filesystem /host von Passthroughbis Mapped.


Warum? Das ist der Grund, warum:

Ihr Gastsystem wird als libvirt-qemuBenutzer ausgeführt und Ihre ACL-Einstellungen schränken die Berechtigungen dieses Benutzers ein.

user:libvirt-qemu:--x

Die korrekte Ausgabe von getfaclsollte sein:

user:libvirt-qemu:rwx
AB
quelle
2

Wenn es Ihr primäres Ziel ist, Dateien nur hin und her zu teilen und Sie offen für die Verwendung von TCP sind, können Sie Dateien einfach über ssh oder ähnliches freigeben.

Wenn Sie beispielsweise einen lokalen Port auf einen vernünftigen Port des Gasts umleiten, sollten Sie diesen Port für den Zugriff verwenden können. Ich benutze SSH / SCP.

Beim Starten meiner VM:

qemu-kvm [all your usual qemu options] -net nic -net user -redir tcp:22122::22

Um auf die VM zuzugreifen, verwende ich SSH. Ich öffne ein Terminal auf meinem Hostrechner:

scp -P22122 myfile.txt klaatu@localhost:~/ssh-share-dir

fishoder sshfsin jedem GUI-Dateimanager, den Sie verwenden, funktioniert es genauso gut, solange Sie den Port festlegen.

Klaatu von Schlacker
quelle
1
Was ich tun würde: Konfigurieren Sie auf Ihrem Ubuntu-Host den NFS-Server, der das gemeinsam genutzte Verzeichnis bedient (Sie können den Client mit Lese- und Schreibrechten versehen). Und mounten Sie es einfach auf dem Fedora VM-Client. Da Sie IP-Konnektivität haben, wird dies höchstwahrscheinlich wie ein Zauber funktionieren.
KWubbufetowicz