Як я можу зберігати файли у змонтованій спільній папці?


18

Я запускаю віртуальну машину Fedora Workstation на хості Ubuntu.
Я створив папку /home/cl/shareв гості і змонтував спільну папку /media/cl/system/virtual/shareяк корінь, дотримуючись вказівок з linux-kvm :

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

Я маю доступ до (читання) файлів і папок із спільних папок, але не можу до них писати.

Приклад: я намагаюся зберегти файл mount-share.txtу папці /home/cl/share.

Обидві папки (хост і гість) мають дозволи на читання і запис, проте я отримую помилку

Error opening file '/home/cl/share/mount-share.txt': Operation not permitted.
  • Хост-операційна система: 64-розрядний робочий стіл Ubuntu 15.10
  • Гостьова операційна система: 64-розрядна робоча станція Fedora 23
  • Програмне забезпечення для віртуалізації: qemu qemu-kvm virt-manager
  • Розташування хост-системи: 1-й вбудований SSD - формат ext4
  • Місце віртуальної пам’яті: 2-й вбудований жорсткий диск - формат NTFS
  • Розташування спільних папок: 2-й вбудований жорсткий диск - формат NTFS

virt-менеджер

Як я можу поділитися каталогом між гостем та хостом та дозволити гостю отримати доступ для читання та запису?

sudo chmod a+x /media/clі sudo chmod -R 777 /mediaне змінила ситуацію.

Гостьова система:

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

Хост-система:

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

Чому ви використовуєте NTFS для обміну між двома системами Linux? ви спробували цю саму налаштування з більш рідним форматом файлів?
Клаату фон Шлакер

2
@KlaatuvonSchlacker: Другий жорсткий диск містить усе, що не пов’язано з операційною системою і відформатовано за допомогою ntfs, щоб бути гнучким у випадку, якщо я хочу отримати доступ до даних з іншими операційними системами, такими як Windows. Коли я використовую VirtualBox для віртуалізації, все працює правильно щодо спільного використання папок.
cl-netbox

Щодо повідомлення про помилку при спробі запису у файлову систему: ви отримуєте цю помилку під час спроби запису від хоста чи лише тоді, коли ви намагаєтесь написати від гостя?
Wildcard

@Wildcard: Я отримую повідомлення про помилку при спробі написати (зберегти) щось із гостя.
cl-netbox

Відповіді:


14

Я міг відтворити проблему в своїй системі.
Ваша основна проблема - обмеження ACL вашого хоста.
З цієї причини змініть атрибути ACL libvirt-qemuкористувача:

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

Змініть Modeналаштування для Filesystem /host від на Passthroughдо Mapped.


Чому? Ось чому:

Ваша гостьова система працює як libvirt-qemuкористувач, а ваші налаштування ACL обмежують дозволи цього користувача.

user:libvirt-qemu:--x

Правильний вихід getfaclмає бути:

user:libvirt-qemu:rwx

2

Якщо ваша основна мета - просто ділитися файлами вперед і назад, і ви відкриті для використання TCP, ви можете просто ділитися файлами через ssh або подібні.

Наприклад, якщо ви перенаправляєте локальний порт на чутливий порт гостя, ви повинні мати можливість використовувати цей порт для доступу. Я використовую SSH / SCP.

Під час запуску мого VM:

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

А потім для доступу до ВМ я використовую SSH; Я відкриваю термінал на своїй хост-машині:

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

fishабо sshfsв будь-якому файловому менеджері GUI, який ви використовуєте, працює так само добре, поки ви встановите порт.


1
Що я б робив: на своєму хості Ubuntu налаштуйте сервер NFS, який обслуговує спільний dir (ви можете змусити його читати-писати клієнту). І просто встановіть його на клієнті Fedora VM. Оскільки у вас IP-з'єднання, швидше за все, це буде як принадність.
KWubbufetowicz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.