마운트된 공유 폴더에 파일을 저장하는 방법은 무엇입니까?

마운트된 공유 폴더에 파일을 저장하는 방법은 무엇입니까?

Ubuntu 호스트에서 Fedora Workstation 가상 머신을 실행하고 있습니다. 게스트에 폴더를 생성하고
아래 지침에 따라 공유 폴더를 루트로 마운트했습니다./home/cl/share/media/cl/system/virtual/share리눅스-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 Desktop 64비트
  • 게스트 운영 체제: Fedora 23 Workstation 64비트
  • 가상화 소프트웨어:qemu qemu-kvm virt-manager
  • 호스트 시스템 위치: 첫 번째 내부 SSD - ext4 형식
  • 가상 저장 위치: 두 번째 내부 하드 드라이브 - NTFS 형식
  • 공유 폴더 위치: 두 번째 내부 하드 드라이브 - NTFS 형식

가상 관리자

게스트와 호스트 간에 디렉토리를 공유하고 게스트에게 읽기 및 쓰기 액세스를 허용하는 방법은 무엇입니까?

sudo chmod a+x /media/clsudo 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

답변1

내 시스템에서 문제를 재현할 수 있습니다.
주요 문제는 호스트의 ACL 제한 사항입니다.
이렇게 하려면 사용자의 ACL 속성을 변경하십시오 libvirt-qemu.

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

Mode설정을 에서 로 Filesystem /host 변경 합니다 .PassthroughMapped


왜? 이유는 다음과 같습니다.

게스트는 libvirt-qemu사용자로 실행 중이며 ACL 설정은 해당 사용자의 권한을 제한합니다.

user:libvirt-qemu:--x

올바른 출력은 getfacl다음과 같아야 합니다.

user:libvirt-qemu:rwx

답변2

주요 목표가 단지 파일을 주고받는 것이고 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포트를 설정하는 한 어떤 GUI 파일 관리자를 사용하든지 가능합니다.

관련 정보