โฟลเดอร์ที่แชร์ระหว่างผู้เยี่ยมชม QEMU Windows และโฮสต์ Linux


24

ในอดีตฉันเคยใช้ Virtual Box ซึ่งได้รับการสนับสนุนที่ดีมากสำหรับการแชร์โฟลเดอร์บนโฮสต์กับแขกของ Windows ฉันกำลังมองหาฟังก์ชั่นที่คล้ายกันสำหรับ QEMU

เอกสารแนะนำให้เปิดเผยเซิร์ฟเวอร์ Samba ที่ทำงานที่ใดที่หนึ่งในเครือข่ายหรือใช้-net user,smb=/path/to/folderเพื่อเริ่มเซิร์ฟเวอร์ samba

ฉันไม่มีโชคกับ-net user,smbตัวเลือกของ QEMU ทั้งหมดนี้เริ่มต้นsmbd(ซึ่งขัดแย้งกับบริการอื่นที่ทำงานอยู่ภายในเครื่องเนื่องจากพอร์ตที่มีข้อขัดแย้ง) พอจะพูดได้ว่านี่เป็นสิ่งที่ใช้ไม่ได้โดยเฉพาะอย่างยิ่งเมื่อมีแขกหลายคนอยู่ในใจ (สำหรับ Linux -virtfsสามารถใช้ Plan 9) เพื่อการแชร์โฟลเดอร์อย่างง่าย)

ปัญหาอื่น ๆ ของ Samba คือมันไม่ได้ จำกัด อยู่ที่การแชร์โฟลเดอร์ แต่เป็นการแชร์เครื่องพิมพ์การจับคู่ผู้ใช้และอะไรก็ตาม ทั้งหมดที่ฉันต้องการคือการแบ่งปันหนึ่งโฟลเดอร์ (หรือมากกว่า) กับผู้เยี่ยมชมของ Windows

มีวิธีการแชร์โฟลเดอร์ทางเลือกสำหรับ QEMU ที่ทำงานกับผู้เยี่ยมชม Windows หรือไม่

หรือมีวิธีการกำหนดค่า Samba เพื่อ จำกัด ตัวเองให้มีคุณสมบัติที่ จำกัด มากและรวมเข้ากับ QEMU? มันควรจะ:

  • ไม่ใช่ทุกคนในเครือข่ายที่จะสามารถเข้าถึงโฟลเดอร์ได้
  • ผู้ใช้ในพื้นที่รวมอยู่ด้วย (ถ้าเป็นไปได้)
  • ไม่มีฟังก์ชั่นอื่น ๆ (การแชร์เครื่องพิมพ์)
  • ใช้กรณี: เปิดเผยไดเรกทอรี git เป็น Windows รวบรวมใน Windows และใช้ Linux สำหรับการวิเคราะห์
  • มีความเร็วที่ยอมรับได้ Windows ใช้ virtio-scsi และ virtio-net
  • สามารถแชร์โฟลเดอร์จากโฮสต์ Linux กับแขก Windows 7

คำถามที่ไม่เชื่อเรื่องพระเจ้า OS เพิ่มเติม: superuser.com/questions/628169/…
Ciro Santilli i 事件中心中心法轮功六四事件

1
@ CiroSantilli 包子露宪六四事件法轮功คำถามนั้นถูกติดแท็กด้วย Linux ซึ่งใช้-virtfsงานได้ดี (ดูคำถามนี้ด้วย) แต่ฉันไม่ทราบถึงไดรเวอร์ 9p สำหรับ Windows
Lekensteyn

ใช่ไม่ได้บอกว่ามันเป็นล่อลวงหรืออะไรก็ตามที่เกี่ยวข้องเพียงแค่
Ciro Santilli 新疆改造中心法轮功六四事件

คำตอบ:


14

บริการ Samba ในตัวของ QEMU

-net user,smbตัวเลือกที่ไม่ทำงานนั้นเกิดจากความไม่ลงรอยกันกับรุ่น Samba ที่ใหม่กว่า (> = 4) สิ่งนี้ได้รับการแก้ไขใน QEMU v2.2.0 และใหม่กว่าด้วยการเปลี่ยนแปลงเหล่านี้:

(Debian ได้ backported แพตช์สองตัวหลังเป็น 2.1 + dfsg-6 ซึ่งมีอยู่ใน Jessie)

การใช้

คุณสามารถส่งออกหนึ่งโฟลเดอร์\\10.0.2.4\qemuเมื่อใช้เครือข่ายผู้ใช้:

qemu-system-x86_64 \
    -net user,smb=/absolute/path/to/folder \
    -net nic,model=virtio \
    ...

เมื่อ QEMU จะเริ่มประสบความสำเร็จกับตัวเลือกเหล่านี้เป็นใหม่ไดเรกทอรีจะถูกสร้างขึ้นที่มี/tmp/qemu-smb.*-*/ smb.confหากคุณเร็วพอไฟล์นี้อาจถูกแก้ไขเพื่อทำให้เส้นทางเป็นแบบอ่านอย่างเดียวหรือส่งออกโฟลเดอร์เพิ่มเติม

โหมดการทำงาน

samba daemon ถูกเรียกใช้งานเมื่อใดก็ตามที่พอร์ต 139 หรือ 445 เข้าถึงได้ผ่านเครือข่าย "ผู้ใช้" การสื่อสารเกิดขึ้นผ่านอินพุต / เอาต์พุต / ข้อผิดพลาดมาตรฐานของกระบวนการ smbd นี่คือสาเหตุที่ daemons ที่ใหม่กว่าล้มเหลวมันจะเขียนข้อความแสดงข้อผิดพลาดไปยังไพพ์แทนที่จะเป็นข้อความโปรโตคอล

เนื่องจากวิธีการดำเนินการนี้ daemon จะไม่ฟังพอร์ตโฮสต์และดังนั้นจึงสามารถเข้าถึงได้โดยแขกเท่านั้น ดังนั้นลูกค้าอื่น ๆ ในเครือข่ายและผู้ใช้ในพื้นที่ไม่สามารถเข้าถึงโฟลเดอร์โดยใช้ภูตนี้

เนื่องจากการแบ่งปันเครื่องพิมพ์ QEMU v2.2.0 ถูกปิดการใช้งานอย่างสมบูรณ์ผ่านการกำหนดค่า samba ดังนั้นความกังวลอื่นจึงหายไป

ความเร็วขึ้นอยู่กับอะแดปเตอร์เครือข่ายดังนั้นจึงขอแนะนำให้ใช้ไดรเวอร์virtio ในnetkvm Windows

นอกจากนี้โปรดทราบว่า daemon จะถูกดำเนินการโดยพา ธ สัมบูรณ์ (โดยทั่วไป/usr/sbin/smbd) ตามที่ระบุในเวลารวบรวม (ใช้--smbdตัวเลือก) เมื่อใดก็ตามที่คุณต้องการลองไบนารีใหม่หรือการสอดแทรกsmbdคุณจะต้องแก้ไขไฟล์ที่พา ธ นั้น

คำเตือนอื่น ๆ

Executables ( *.exe) จะต้องสามารถเรียกใช้งานได้บนโฮสต์ ( chmod +x FILE) เพื่อให้ผู้เยี่ยมชมมีสิทธิ์ดำเนินการ หากต้องการอนุญาตการเรียกใช้ไฟล์ใด ๆ ให้เพิ่มacl allow execute always = Trueตัวเลือกในการแชร์

ตัวอย่างการกำหนดค่า smb.conf แบบอ่านอย่างเดียวซึ่งอนุญาตให้เรียกใช้ไฟล์ใด ๆ (ขึ้นอยู่กับ QEMU v2.2.0):

...
[qemu]
path = / home / peter / windows 
อ่านอย่างเดียว = yes
guest ok = จริง
บังคับให้ผู้ใช้ = peter 
acl อนุญาตให้เรียกใช้งานเสมอ = True

ฉันใช้ตัวเลือกนี้ฉันต้องการทั้งการอ่าน - เขียน ฉันได้เริ่มบริการ qemu ใหม่และอัพเดท Conf ตามนั้น ฉันไม่เห็นอะไรเลยในโฟลเดอร์เครือข่ายใน explorer ใน windows guest นอกจากนี้ฉันจะค้นหา IP โฮสต์ได้อย่างไร (ฉันถือว่า 10.0.2.4) ในกรณีนี้ที่นี่ IP แขกของฉันสำหรับ NIC นี้คือ 10.0.2.15 @Lekensteyn - ความคิดใด ๆ
tsar2512

@ tsar2512 \\10.0.2.4\qemuฉันมักจะไปสำรวจแล้วใช้แผนที่เครือข่ายไดรฟ์เพื่อกำหนดอักษรไปยัง เมื่อเร็ว ๆ นี้ฉันได้ข้ามขั้นตอนนั้นและเปิดเส้นทางดังกล่าวโดยตรงจากกล่องโต้ตอบเรียกใช้
Lekensteyn

6

ในปี 2018วิธีง่ายๆในการแชร์โฟลเดอร์ระหว่างเครื่องโฮสต์Linux & Windowsคือการเปิดใช้งานRDPใน Windows guestและเชื่อมต่อvmกับไคลเอนต์เดสก์ท็อประยะไกล Remmina & เปิดใช้งานโฟลเดอร์แชร์:

การตั้งค่า Remmina RDP

นี้จะสร้างโฟลเดอร์ภายใต้ชิ้นนี้ ( ที่ใช้ร่วมกันโฟลเดอร์บนลินุกซ์hostname ) & A ร่วมเครือข่ายภายใน\\tsclient\shared-folder-name guestคุณยังสามารถแมปไดรฟ์เครือข่าย:

โฟลเดอร์ Windows Guest ใช้ร่วมกัน

  • วิธีนี้ไม่จำเป็นต้องsambaเปิดใช้งาน

  • ทดสอบภายใต้libvirt/ virt-managerแต่ควรทำงานกับการจำลองเสมือนใด ๆ


เทคนิคที่น่าสนใจการเปลี่ยนเส้นทางระบบไฟล์ดูเหมือนจะเป็นคุณสมบัติ RDP xfreerdp /drive:shared-folder-name,/home/user/sharedตัวเลือกที่ควรจะทำงานได้เป็นอย่างดี แหล่งที่มาของการอ้างอิงรหัส: การกำหนดค่า Remmina , รหัสห้องสมุด FreeRDP
Lekensteyn

นี่เป็นทางออกที่ปลอดภัยโดยไม่มีอันตรายจากผู้โจมตีหรือไม่?
เดฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.