Come posso archiviare i file nella cartella condivisa montata?


18

Sto eseguendo una macchina virtuale Fedora Workstation su un host Ubuntu.
Ho creato una cartella /home/cl/sharenel guest e ho montato la cartella condivisa /media/cl/system/virtual/sharecome root seguendo le istruzioni di linux-kvm :

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

Sono in grado di accedere a (leggere) file e cartelle da cartelle condivise, ma non riesco a scriverli.

Un esempio: sto cercando di salvare il file mount-share.txtnella cartella /home/cl/share.

Entrambe le cartelle (host e guest) dispongono delle autorizzazioni di lettura / scrittura, tuttavia ricevo l'errore

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Sistema operativo host: Ubuntu 15.10 desktop a 64 bit
  • Sistema operativo guest: workstation Fedora 23 a 64 bit
  • Software di virtualizzazione: qemu qemu-kvm virt-manager
  • Posizione del sistema host: 1 ° SSD integrato - formato ext4
  • Posizione di archiviazione virtuale: 2 ° HDD incorporato - formato NTFS
  • Posizione delle cartelle condivise: 2 ° HDD incorporato - formato NTFS

virt-manager

Come posso condividere una directory tra guest e host e consentire l'accesso guest in lettura e scrittura?

sudo chmod a+x /media/cle sudo chmod -R 777 /medianon ha cambiato la situazione.

Sistema ospite:

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

Perché stai usando NTFS per condividere tra due sistemi Linux? hai provato questa stessa configurazione con un formato di file più nativo?
Klaatu von Schlacker,

2
@KlaatuvonSchlacker: il secondo HDD contiene tutto ciò che non è relativo al sistema operativo ed è formattato con ntfs per essere flessibile nel caso in cui voglio accedere ai dati con altri sistemi operativi, come Windows. Quando uso VirtualBox per la virtualizzazione, tutto funziona correttamente per quanto riguarda la condivisione delle cartelle.
cl-netbox,

Per quanto riguarda il messaggio di errore quando si tenta di scrivere nel filesystem: si ottiene quell'errore quando si tenta di scrivere dall'host o solo quando si tenta di scrivere dal guest?
Wildcard il

@Wildcard: ricevo il messaggio di errore quando provo a scrivere (archiviare) qualcosa all'interno del guest.
cl-netbox,

Risposte:


14

Potrei riprodurre il problema sul mio sistema.
Il tuo problema principale sono le restrizioni ACL del tuo host.
Per questo motivo, modifica gli attributi ACL libvirt-qemudell'utente:

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

Modifica le Modeimpostazioni per Filesystem /host da Passthrougha Mapped.


Perché? Questo è il motivo per cui:

Il sistema guest funziona come libvirt-qemuutente e le impostazioni ACL limitano le autorizzazioni di questo utente.

user:libvirt-qemu:--x

L'output corretto di getfacldovrebbe essere:

user:libvirt-qemu:rwx

2

Se il tuo obiettivo principale è solo quello di condividere i file avanti e indietro e sei aperto all'utilizzo di TCP, puoi semplicemente condividere file su ssh o simili.

Ad esempio, se si reindirizza una porta locale a una porta sensibile sul guest, si dovrebbe essere in grado di utilizzare quella porta per l'accesso. Uso SSH / SCP.

All'avvio della mia macchina virtuale:

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

E poi per accedere alla VM, utilizzo SSH; Apro un terminale sul mio computer host:

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

fisho sshfsin qualunque gestore file GUI che usi funziona altrettanto bene, purché tu imposti la porta.


1
Cosa farei: sul tuo host Ubuntu, configura il server NFS che serve la directory condivisa (puoi farlo leggere / scrivere sul client). E semplicemente montalo sul client Fedora VM. Dato che hai la connettività IP, molto probabilmente funzionerà come un fascino.
KWubbufetowicz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.