¿Cómo puedo almacenar archivos en la carpeta compartida montada?

18

Estoy ejecutando una máquina virtual Fedora Workstation en un host Ubuntu.
Creé una carpeta /home/cl/shareen el invitado y monté la carpeta compartida /media/cl/system/virtual/sharecomo root siguiendo las instrucciones de linux-kvm :

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

Puedo acceder (leer) archivos y carpetas desde carpetas compartidas, pero no puedo escribirles.

Un ejemplo: estoy tratando de guardar el archivo mount-share.txten la carpeta /home/cl/share.

Ambas carpetas (host e invitado) tienen permisos de lectura y escritura, sin embargo, recibo el error

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Sistema operativo host: escritorio Ubuntu 15.10 de 64 bits
  • Sistema operativo invitado: estación de trabajo Fedora 23 de 64 bits
  • Software de virtualización: qemu qemu-kvm virt-manager
  • Ubicación del sistema host: primer SSD incorporado - formato ext4
  • Ubicación de almacenamiento virtual: segundo disco duro incorporado - formato NTFS
  • Ubicación de carpetas compartidas: segundo HDD incorporado - formato NTFS

virt-manager

¿Cómo puedo compartir un directorio entre el invitado y el host y permitir el acceso de lectura y escritura del invitado?

sudo chmod a+x /media/clY sudo chmod -R 777 /mediano cambió la situación.

Sistema de invitados:

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
cl-netbox
fuente
¿Por qué está utilizando NTFS para compartir entre dos sistemas Linux? ¿Has probado esta misma configuración con un formato de archivo más nativo?
Klaatu von Schlacker
2
@KlaatuvonSchlacker: el segundo HDD contiene todo lo que no está relacionado con el sistema operativo y está formateado con ntfs para ser flexible en caso de que quiera acceder a los datos con otros sistemas operativos, como Windows. Cuando uso VirtualBox para la virtualización, todo funciona correctamente con respecto al intercambio de carpetas.
cl-netbox el
Con respecto al mensaje de error al intentar escribir en el sistema de archivos: ¿obtiene ese error cuando intenta escribir desde el host, o solo cuando intenta escribir desde el invitado?
Comodín el
@Wildcard: recibo el mensaje de error cuando intento escribir (almacenar) algo desde el invitado.
cl-netbox

Respuestas:

14

Podría reproducir el problema en mi sistema.
Su principal problema son las restricciones de ACL de su host.
Por esta razón, cambie los atributos de ACL del libvirt-qemuusuario:

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

Cambie la Modeconfiguración de Filesystem /host de Passthrougha Mapped.


¿Por qué? Esa es la razón por la cual:

Su sistema invitado se ejecuta como libvirt-qemuusuario y su configuración de ACL restringe los permisos de este usuario.

user:libvirt-qemu:--x

La salida correcta de getfacldebería ser:

user:libvirt-qemu:rwx
AB
fuente
2

Si su objetivo principal es simplemente compartir archivos de un lado a otro, y está abierto a usar TCP, simplemente puede compartir archivos a través de ssh o similar.

Por ejemplo, si redirige un puerto local a un puerto sensible en el invitado, debería poder usar ese puerto para acceder. Yo uso SSH / SCP.

Al iniciar mi VM:

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

Y luego para acceder a la VM, uso SSH; Abro una terminal en mi máquina host:

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

fisho sshfsen cualquier administrador de archivos GUI que use funciona igual de bien, siempre que configure el puerto.

Klaatu von Schlacker
fuente
1
Lo que haría: en su host Ubuntu, configure el servidor NFS que sirve el directorio compartido (puede hacerlo de lectura-escritura al cliente). Y simplemente móntelo en el cliente Fedora VM. Dado que tiene conectividad IP, lo más probable es que funcione de maravilla.
KWubbufetowicz