ฉันจะจัดเก็บไฟล์ในโฟลเดอร์แชร์ที่เชื่อมต่อแล้วได้อย่างไร


18

ฉันกำลังใช้งานเครื่องเสมือน Fedora Workstation บนโฮสต์ Ubuntu
ฉันสร้างโฟลเดอร์/home/cl/shareใน guest และติดตั้งโฟลเดอร์แชร์/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
  • ตำแหน่งระบบโฮสต์: SSD ในตัวรุ่นที่ 1 - รูปแบบ ext4
  • ที่เก็บข้อมูลเสมือน: HDD ในตัวเครื่องที่สอง - รูปแบบ NTFS
  • ตำแหน่งโฟลเดอร์ที่แชร์: HDD ในตัวเครื่องที่ 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 เพื่อแชร์ระหว่างสองระบบลินุกซ์ คุณลองตั้งค่าเดียวกันนี้ด้วยรูปแบบไฟล์ดั้งเดิมเพิ่มเติมหรือไม่
Klaatu von Schlacker

2
@ KlaatuvonSchlacker: HDD ตัวที่สองมีทุกอย่างที่ไม่เกี่ยวข้องกับระบบปฏิบัติการและได้รับการฟอร์แมทด้วย 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 จากไปPassthroughMapped


ทำไม? นั่นคือเหตุผลที่:

ระบบเกสต์ของคุณทำงานในฐานะ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

จากนั้นเพื่อเข้าถึง VM ฉันใช้ SSH; ฉันเปิดเทอร์มินัลบนเครื่องโฮสต์:

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

fishหรือsshfsตัวจัดการไฟล์ GUI ใดก็ตามที่คุณใช้ก็ใช้ได้เหมือนกันตราบใดที่คุณตั้งค่าพอร์ต


1
สิ่งที่ฉันจะทำ: บนโฮสต์ Ubuntu ของคุณกำหนดค่าเซิร์ฟเวอร์ NFS ที่ให้บริการ dir ที่ใช้ร่วมกัน (คุณสามารถทำให้อ่าน - เขียนไปยังไคลเอนต์ได้) และเพียงติดตั้งบนไคลเอนต์ Fedora VM เนื่องจากคุณมีการเชื่อมต่อ IP สิ่งนี้น่าจะเป็นงานที่มีเสน่ห์
KWubbufetowicz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.