Intereting Posts

Как хранить файлы в установленной общей папке?

Я запускаю виртуальную машину рабочей станции Fedora на хосте Ubuntu.
Я создал папку /home/cl/share в гостевой системе и установил общую папку /media/cl/system/virtual/share как root в соответствии с инструкциями из 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. 
  • Хост-операционная система: Ubuntu 15.10 настольный 64-разрядный
  • Гостевая операционная система: Fedora 23 рабочая станция 64-разрядная
  • Программное обеспечение для виртуализации: qemu qemu-kvm virt-manager
  • Расположение хост-системы: 1-й встроенный SSD-формат ext4
  • Виртуальное хранилище: 2-й встроенный жесткий диск – формат NTFS
  • Расположение общих папок: 2-й встроенный жесткий диск – формат NTFS

вирт-менеджер

Как я могу совместно использовать каталог между гостем и хостом и разрешать гостевой доступ для чтения и записи?

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:rx group::--- mask::rx 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 

Я мог бы воспроизвести проблему в своей системе.
Основная проблема заключается в ограничениях ACL вашего хоста.
По этой причине измените атрибуты ACL пользователя libvirt-qemu :

 sudo setfacl -R -mu:libvirt-qemu:rwx /media/cl 

Измените настройки режима для файловой системы / хоста с Passthrough на Mapped .


Зачем? Вот почему:

Ваша гостевая система работает как пользователь libvirt-qemu а ваши настройки ACL ограничивают разрешения этого пользователя.

 user:libvirt-qemu:--x 

Правильный вывод getfacl должен быть:

 user:libvirt-qemu:rwx 

Если ваша основная цель – просто делиться файлами взад и вперед, и вы можете использовать TCP, вы можете просто делиться файлами по ssh или аналогичным.

Например, если вы перенаправляете локальный порт на разумный порт для гостя, вы должны иметь возможность использовать этот порт для доступа. Я использую SSH / SCP.

При запуске моей виртуальной машины:

 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 в любом графическом менеджере графического интерфейса, который вы используете, работает так же хорошо, пока вы устанавливаете порт.