Como posso armazenar arquivos na pasta compartilhada montada?

16

Estou executando uma máquina virtual Fedora Workstation em um host Ubuntu.
Eu criei uma pasta /home/cl/share no guest e montei a pasta compartilhada /media/cl/system/virtual/share as root seguindo as instruções de linux-kvm :

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

Eu consigo acessar (ler) arquivos e pastas de pastas compartilhadas, mas não consigo escrever para eles.

Um exemplo: estou tentando salvar o arquivo mount-share.txt na pasta /home/cl/share .

As duas pastas (host e guest) possuem permissões de leitura / gravação, mas recebo o erro

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Sistema operacional do host: área de trabalho do Ubuntu 15.10 de 64 bits
  • Sistema operacional convidado: estação de trabalho Fedora 23 de 64 bits
  • Software de virtualização: qemu qemu-kvm virt-manager
  • Localização do sistema host: 1º SSD integrado - formato ext4
  • Local de armazenamento virtual: 2º HDD incorporado - formato NTFS
  • Local das pastas compartilhadas: segundo HDD incorporado - formato NTFS

Como posso compartilhar um diretório entre convidado e host e permitir o acesso de leitura / gravação do convidado?

sudo chmod a+x /media/cl e sudo chmod -R 777 /media não alteraram a situação.

Sistema convidado:

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

Sistema host:

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
    
por cl-netbox 24.01.2016 / 18:54

2 respostas

13

Eu poderia reproduzir o problema no meu sistema.
Seu principal problema são as restrições de ACL do seu host.
Por esse motivo, altere os atributos da ACL do libvirt-qemu user:

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

Mude as configurações do Mode para Sistema de arquivos / host de Passthrough para Mapped .

Por quê? Essa é a razão pela qual:

Seu sistema convidado é executado como libvirt-qemu user e suas configurações de ACL restringem as permissões desse usuário.

user:libvirt-qemu:--x

A saída correta de getfacl deve ser:

user:libvirt-qemu:rwx
    
por 28.01.2016 / 09:03
3

Se o seu objetivo principal é apenas compartilhar arquivos e estar aberto ao uso do TCP, você pode compartilhar arquivos por meio de ssh ou similar.

Por exemplo, se você redirecionar uma porta local para uma porta sensata no convidado, poderá usar essa porta para acesso. Eu uso SSH / SCP.

Ao iniciar minha VM:

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

E, em seguida, para acessar a VM, eu uso o SSH; Eu abro um terminal na minha máquina host:

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

fish ou sshfs no gerenciador de arquivos GUI que você usa funciona tão bem quanto você definir a porta.

    
por 25.01.2016 / 20:21