วิธีทำให้ Guest OS ติดตาม symlinks จากโฟลเดอร์ที่แชร์


18

ฉันมี Ubuntu Desktop เป็นระบบปฏิบัติการหลักและเซิร์ฟเวอร์ Ubuntu เป็นระบบปฏิบัติการทั่วไปใน VirtualBox 4.2.16

ฉันสร้างโฟลเดอร์แชร์ที่เรียกว่า / shared และใส่ symlink หลาย ๆ อันไว้ในโฟลเดอร์ต่าง ๆ ในระบบปฏิบัติการหลักของฉัน แน่นอนว่าแขกของฉันระบบปฏิบัติการเห็นสัญลักษณ์เชื่อมโยงที่แตกหักเท่านั้น - เนื่องจากตำแหน่งเหล่านี้มีอยู่ในระบบปฏิบัติการหลักเท่านั้น

ฉันจะทำให้ Guest OS ของฉันดูเนื้อหาจริงได้อย่างไร

การสร้างโฟลเดอร์แชร์อื่นนั้นไม่ใช่ตัวเลือก


1
FYI ถ้าโฮสต์ของคุณคือ windows7,8,10 คุณต้องทำตามคำแนะนำในคำตอบและจากนั้น sudo เริ่มต้น VM (aka "run as administrator") ดังที่เห็นในโพสต์บล็อกนี้เกี่ยวกับ linux guest VM แชร์โฟลเดอร์ที่มีสัญลักษณ์บน โฮสต์หน้าต่าง
Trevor Boyd Smith

คำตอบ:


23

มันเป็นปัญหาใน virtualBox และเกี่ยวข้องกับความปลอดภัย ก่อนที่ 4.1.8 symlinks จะทำงาน แต่มีข้อบกพร่องอย่างจริงจัง และแผ่นดิสก์ถูกสร้างขึ้นเพื่อลบการสนับสนุน symlink

ดูความคิดเห็นนี้ :

การสร้างลิงก์สัญลักษณ์จากภายในแขกถูกปิดใช้งานใน VirtualBox 4.1.8 ด้วยเหตุผลด้านความปลอดภัย แขกสามารถสร้างลิงก์สัญลักษณ์ซึ่งชี้อยู่นอกไดเรกทอรีโฮสต์ที่กำหนด สิ่งนี้ไม่เกี่ยวกับข้อผิดพลาด ext3 / ext4 ใด ๆ และแขกยังสามารถอ่าน symlink ที่สร้างขึ้นบนโฮสต์ได้

ขออภัยสำหรับคำสั่งล่าช้า

ถ้าคุณทำ

 VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

จากนั้นแขกของคุณจะสามารถสร้าง symlink ได้อีกครั้ง แต่ด้วยเหตุผลด้านความปลอดภัย (ดูด้านบน) สิ่งนี้จะถูกปิดใช้งานตามค่าเริ่มต้น การแก้ไขเพื่อป้องกันการเชื่อมโยงที่เป็นอันตรายจากแขกมีความซับซ้อนมากดังนั้นเราจึงตัดสินใจไม่อนุญาตให้ผู้เยี่ยมชมสร้าง symlink ใด ๆ เพื่อแก้ไขปัญหาความปลอดภัย

(ฉันเอาเสรีภาพในการแก้ไขข้อบกพร่องในความคิดเห็น;)

  • และโปรดทราบว่าคุณต้องรีสตาร์ท vBoxเพื่อให้การเปลี่ยนแปลงเปิดใช้งาน

ฉันดำเนินการคำสั่งนี้และเริ่ม VB ใหม่ สีของ symlink เปลี่ยนไป แต่ตอนนี้ฉันไม่สามารถใส่มันลงไปได้ ฉันเห็นมันเมื่อฉันใช้ ls แต่ทุบตีหยุดแสดงให้ฉันเห็นบน TAB
dev9

อืมดูเหมือนว่ามันจะไม่สามารถใช้งานได้?
Rinzwind

ls แสดงให้ฉันเห็น lrwxrwx --- ดังนั้นมันน่าจะดี เมื่อฉันลองใส่ซีดี bash จะบอกฉันว่าไม่มีไฟล์หรือไดเร็กตอรี่นั้น
dev9

3
SHARE_NAME คืออะไร ไม่มีใครอธิบายได้อย่างชัดเจนว่าเราจะรับมันได้ที่ไหน
Meglio

3
โฟลเดอร์ที่คุณใช้สำหรับการแชร์
Rinzwind

1

คำตอบสั้น ๆ คือมันไม่สามารถทำได้

ตั๋วต่อไปนี้บน virtualbox.org มีการชี้แจงบางอย่าง:

การเปลี่ยนแปลงนี้มีเจตนาและแก้ไขปัญหาการใช้งานโฟลเดอร์ที่ใช้ร่วมกันในปัจจุบัน สำหรับความเข้ากันได้กับ OSE ของผู้เข้าพักซึ่งไม่มีความคิดว่า symlink คืออะไรในขณะที่ตีความด้านโฮสต์และสิ่งนี้หมายความว่าเรามีพฤติกรรมที่ไม่คาดคิดกับแขกของระบบปฏิบัติการที่รู้ว่า symlink คืออะไร (เช่นถ้า symlink บนโฟลเดอร์แชร์ ที่ / foo จะชี้ไปที่ / bar / file มันเป็นไปไม่ได้ที่จะทำสิ่งที่ถูกต้องในฝั่งโฮสต์)

แน่นอนว่าสามารถแก้ไขได้ แต่ไกลจากเรื่องเล็กน้อยเนื่องจากการแยกการประมวลผล symlink ระหว่างฝั่งแขกและฝั่งโฮสต์จำเป็นต้องได้รับการออกแบบใหม่ ไม่สามารถทำได้อย่างรวดเร็วดังนั้นทางเลือกเดียวคือปิดการสร้าง symlink มีผู้ใช้ / แอปพลิเคชั่นมากเกินไปที่เกิดจากพฤติกรรมที่ไม่ได้มาตรฐาน

แหล่ง

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