Comment puis-je stocker des fichiers dans le dossier partagé monté?

18

J'exécute une machine virtuelle Fedora Workstation sur un hôte Ubuntu.
J'ai créé un dossier /home/cl/sharedans l'invité et monté le dossier partagé en /media/cl/system/virtual/sharetant que root en suivant les instructions de linux-kvm :

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

Je peux accéder (lire) aux fichiers et dossiers à partir de dossiers partagés, mais je ne peux pas y écrire.

Un exemple: j'essaie d'enregistrer le fichier mount-share.txtdans le dossier /home/cl/share.

Les deux dossiers (hôte et invité) ont des autorisations de lecture-écriture, néanmoins je reçois l'erreur

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Système d'exploitation hôte: Ubuntu 15.10 desktop 64-bit
  • Système d'exploitation invité: station de travail Fedora 23 64 bits
  • Logiciel de virtualisation: qemu qemu-kvm virt-manager
  • Emplacement du système hôte: 1er SSD intégré - format ext4
  • Emplacement de stockage virtuel: 2ème disque dur intégré - format NTFS
  • Emplacement des dossiers partagés: 2ème disque dur intégré - format NTFS

virt-manager

Comment partager un répertoire entre l'invité et l'hôte et autoriser l'accès en lecture-écriture à l'invité?

sudo chmod a+x /media/clet sudo chmod -R 777 /median'a pas changé la situation.

Système invité:

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

Système hôte:

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
la source
Pourquoi utilisez-vous NTFS pour partager entre deux systèmes Linux? avez-vous essayé cette même configuration avec un format de fichier plus natif?
Klaatu von Schlacker
2
@KlaatuvonSchlacker: Le deuxième disque dur contient tout ce qui n'est pas lié au système d'exploitation et est formaté avec ntfs pour être flexible au cas où je souhaiterais accéder aux données avec d'autres systèmes d'exploitation, tels que Windows. Lorsque j'utilise VirtualBox pour la virtualisation, tout fonctionne correctement concernant le partage de dossiers.
cl-netbox du
Concernant le message d'erreur lors de la tentative d'écriture sur le système de fichiers: obtenez-vous cette erreur lorsque vous essayez d'écrire à partir de l'hôte, ou uniquement lorsque vous essayez d'écrire à partir de l'invité?
Wildcard
@Wildcard: Je reçois le message d'erreur lorsque j'essaie d'écrire (stocker) quelque chose de l'intérieur de l'invité.
cl-netbox du

Réponses:

14

Je pourrais reproduire le problème sur mon système.
Votre principal problème réside dans les restrictions ACL de votre hôte.
Pour cette raison, modifiez les attributs ACL de l' libvirt-qemuutilisateur:

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

Modifiez les Modeparamètres de Filesystem /host de Passthroughà Mapped.


Pourquoi? C'est la raison pour laquelle:

Votre système invité s'exécute en tant libvirt-qemuqu'utilisateur et vos paramètres ACL restreignent les autorisations de cet utilisateur.

user:libvirt-qemu:--x

La sortie correcte de getfacldoit être:

user:libvirt-qemu:rwx
UN B
la source
2

Si votre objectif principal est simplement de partager des fichiers dans les deux sens, et que vous êtes ouvert à l'utilisation de TCP, vous pouvez simplement partager des fichiers sur ssh ou similaire.

Par exemple, si vous redirigez un port local vers un port sensible sur l'invité, vous devriez pouvoir utiliser ce port pour l'accès. J'utilise SSH / SCP.

Lors du lancement de ma VM:

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

Et puis pour accéder à la VM, j'utilise SSH; J'ouvre un terminal sur ma machine hôte:

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

fishou sshfsdans le gestionnaire de fichiers GUI que vous utilisez fonctionne aussi bien, tant que vous définissez le port.

Klaatu von Schlacker
la source
1
Ce que je ferais: sur votre hôte Ubuntu, configurez le serveur NFS servant le répertoire partagé (vous pouvez le faire en lecture-écriture sur le client). Et montez-le simplement sur le client Fedora VM. Puisque vous avez une connectivité IP, cela fonctionnera très probablement comme un charme.
KWubbufetowicz