Jak mogę przechowywać pliki w zamontowanym folderze współdzielonym?

18

Korzystam z maszyny wirtualnej Fedora Workstation na hoście Ubuntu.
Utworzyłem folder /home/cl/sharew gościu i zamontowałem folder współdzielony /media/cl/system/virtual/sharejako root, postępując zgodnie z instrukcjami z linux-kvm :

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

Jestem w stanie uzyskać dostęp (odczyt) plików i folderów z folderów współdzielonych, ale nie mogę do nich pisać.

Przykład: próbuję zapisać plik mount-share.txtw folderze /home/cl/share.

Oba foldery (host i gość) mają uprawnienia do odczytu i zapisu, jednak pojawia się błąd

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • System operacyjny hosta: Ubuntu 15.10 desktop 64-bit
  • System operacyjny gościa: stacja robocza Fedora 23 64-bitowa
  • Oprogramowanie do wirtualizacji: qemu qemu-kvm virt-manager
  • Lokalizacja systemu hosta: 1. wbudowany dysk SSD - format ext4
  • Lokalizacja wirtualnego miejsca przechowywania: 2. wbudowany dysk twardy - format NTFS
  • Lokalizacja folderów współdzielonych: 2. wbudowany dysk twardy - format NTFS

virt-manager

Jak mogę udostępnić katalog pomiędzy gościem a gospodarzem i pozwolić gościowi na dostęp do odczytu i zapisu?

sudo chmod a+x /media/cli sudo chmod -R 777 /medianie zmieniłem sytuacji.

System gościa:

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

System hosta:

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
źródło
Dlaczego używasz NTFS do udostępniania między dwoma systemami Linux? próbowałeś tego samego zestawu z bardziej rodzimym formatem pliku?
Klaatu von Schlacker
2
@KlaatuvonSchlacker: Drugi dysk twardy zawiera wszystko, co nie jest związane z systemem operacyjnym i jest sformatowany za pomocą ntfs, aby był elastyczny na wypadek, gdy chcę uzyskać dostęp do danych za pomocą innych systemów operacyjnych, takich jak Windows. Kiedy używam VirtualBox do wirtualizacji, wszystko działa poprawnie w zakresie udostępniania folderów.
cl-netbox
Jeśli chodzi o komunikat o błędzie podczas próby zapisu do systemu plików: czy ten błąd pojawia się podczas próby zapisu z hosta, czy tylko podczas próby zapisu od gościa?
Wildcard
@Wildcard: Otrzymuję komunikat o błędzie podczas próby napisania (zapisania) czegoś z poziomu gościa.
cl-netbox

Odpowiedzi:

14

Mógłbym odtworzyć problem w moim systemie.
Twoim głównym problemem są ograniczenia ACL twojego hosta.
Z tego powodu zmień atrybuty ACL libvirt-qemuużytkownika:

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

Zmień Modeustawienia dla Filesystem /host z Passthroughna Mapped.


Dlaczego? To jest powód, dlaczego:

System gościa działa jako libvirt-qemuużytkownik, a ustawienia ACL ograniczają uprawnienia tego użytkownika.

user:libvirt-qemu:--x

Prawidłowe wyjście getfaclpowinno być:

user:libvirt-qemu:rwx
AB
źródło
2

Jeśli twoim głównym celem jest po prostu udostępnianie plików tam iz powrotem, a ty jesteś otwarty na korzystanie z TCP, możesz po prostu udostępniać pliki przez ssh lub podobny.

Na przykład, jeśli przekierujesz port lokalny do sensownego portu gościa, powinieneś mieć możliwość korzystania z tego portu w celu uzyskania dostępu. Używam SSH / SCP.

Podczas uruchamiania mojej maszyny wirtualnej:

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

A następnie, aby uzyskać dostęp do VM, używam SSH; Otwieram terminal na moim hoście:

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

fishlub sshfsw dowolnym menedżerze plików GUI, którego używasz, działa równie dobrze, o ile ustawisz port.

Klaatu von Schlacker
źródło
1
Co bym zrobił: na swoim hoście Ubuntu skonfiguruj serwer NFS obsługujący udostępniony katalog (możesz ustawić go do odczytu i zapisu do klienta). I po prostu zamontuj go na kliencie VM Fedory. Ponieważ masz połączenie IP, najprawdopodobniej zadziała jak urok.
KWubbufetowicz