web-dev-qa-db-fra.com

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

Je gère une machine virtuelle de poste de travail Fedora sur un hôte Ubuntu.
[.____] J'ai créé un dossier /home/cl/share Dans l'invité et monté le dossier partagé /media/cl/system/virtual/share En tant que root suivant les instructions de Linux-kvm :

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

Je suis capable d'accéder aux fichiers et aux dossiers (lire) des dossiers partagés, mais je ne peux pas écrire à eux.

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

Les deux dossiers (hôte et invité) ont des autorisations en lecture-écriture, je reçois néanmoins 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 bits
  • Système d'exploitation invité: Fedora 23 Workstation 64 bits
  • Logiciel de virtualisation: qemuqemu-kvmvirt-manager
  • Système hôte Emplacement: 1er format SSD - EXT4
  • Emplacement de stockage virtuel: 2ème HDD intégré - Format NTFS
  • Dossiers partagés Emplacement: 2ème HDD intégré - Format NTFS

virt-manager

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

Sudo chmod a+x /media/cl et Sudo chmod -R 777 /media n'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
18
cl-netbox

Je pourrais reproduire le problème sur mon système.
[.____] Votre problème principal sont les restrictions ACL de votre hôte.
[.____] Pour cette raison, changez les attributs ACL du libvirt-qemu utilisateur :

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

Changer la Mode Paramètres pour Filesystem /Host de Passthrough à Mapped.


Pourquoi? C'est la raison pour laquelle :

Votre système d'invités fonctionne comme libvirt-qemu Utilisateur et vos paramètres ACL restreignent les autorisations de cet utilisateur.

user:libvirt-qemu:--x

La sortie correcte de getfacl devrait être:

user:libvirt-qemu:rwx
14
A.B.

Si votre objectif principal est juste de partager des fichiers d'avant en arrière 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 à un port sensible de l'invité, vous devriez pouvoir utiliser ce port d'accès. J'utilise SSH/SCP.

Lors du lancement de mon VM:

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

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

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

fish ou sshfs Dans quel que soit le gestionnaire de fichiers de l'interface graphique que vous utilisez des fonctionnalités, aussi longtemps que vous définissez le port.

2