วิธีที่ถูกต้องในการแบ่งปันไดเรกทอรีกับ Ubuntu ที่ทำงานใน Virtual Box VM พร้อมสิทธิ์ที่ถูกต้องคืออะไร?


23

ใน VirtualBox วิธีที่ดีที่สุดในการแบ่งปันไดเรกทอรีระหว่างโฮสต์ OS X และแขกของ Ubuntu คืออะไร

  • โฮสต์: Mac OS X 10.7.3
  • แขก: Ubuntu 12.04
  • บุคคลทั่วไปมีไดเรกทอรีที่ใช้ร่วมกันติดตั้งผ่านการตั้งค่า VirtualBox กับ การเข้าถึง = เต็มและAuto-เมา = ใช่

ปัญหาเกี่ยวกับการตั้งค่านี้แสดงไว้ด้านล่าง ในไดเรกทอรีที่ใช้ร่วมกันของฉันฉันไม่สามารถเปลี่ยนการอนุญาตได้เลย (ไม่ใช่สิทธิ์ที่ถูกปฏิเสธข้อผิดพลาด แต่พวกเขาไม่ได้มีผลบังคับใช้)

Ubuntu 12.04 (แขก)

% ls -l
total 0
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 10
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 2
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 3
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 4
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 5
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 6
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 7
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 8
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 9

Mac OS X 10.7.3 (โฮสต์):

$ ls -l
total 0
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 1
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 10
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 2
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 3
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 4
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 5
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 6
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 7
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 8
-rw-r--r--  1 <my-mac-user>  staff  0 Apr 17 21:56 9

ถ้าฉัน chmod กับแขกไม่มีอะไรเปลี่ยนแปลง:

% chmod +x 1 | ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

ถ้าฉัน chmod บนโฮสต์มันจะเปลี่ยนในโฮสต์ แต่ไม่ได้อยู่ในแขก:

$ chmod +x 1 | ls -l 1 # host
-rwxrwx--x  1 <my-mac-user>  staff  0 Apr 17 21:56 1

% ls -l 1 # guest
-rwxrwx--- 1 root vboxsf 0 Apr 17 21:56 1

อาฉันคิดออก แต่ฉันไม่สามารถโพสต์คำตอบสำหรับอีก 8 ชั่วโมง (คะแนนไม่เพียงพอ) การแก้ปัญหาคือจะทำอย่างไรsudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_srcที่ umask คือค่าของumaskของผู้ใช้ UID และ GID จากid <user>, srcเป็นชื่อของส่วนแบ่งการ VBox และ/meida/sf_srcเป็นที่ต้องการจุดติด
jmdeldin

คำตอบ:


23

ฉันคิดออกแล้ว!

ในการทำซ้ำ:

  1. ปิด VM เพิ่มโฟลเดอร์ที่ใช้ร่วมกันในการตั้งค่าของ VBox (ถาวร = ใช่, เมาท์อัตโนมัติ = ไม่)
  2. เริ่ม VM
  3. จากเทอร์มินัลให้รันumask && idในฐานะผู้ใช้ปกติเพื่อรับสิ่งนี้:

    002 # this is your umask
    uid=1000(luser) gid=1000(luser) groups=1000(luser),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),124(sambashare),125(vboxsf)
    
  4. sudo mkdir -p /media/sf_src # src is the shared directory

หากต้องการเมานต์srcไดเรกทอรีเป็นการทดสอบ:

sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src 
                           |   |        |        |   |-> where to mount
                           |   |        |        |       the file
                           |   |        |        |-> name of the shared dir
                           |   |        |            (in VBox settings)
                           |   |        |
                           \   |        /
                        from the `id` command

หากต้องการติดตั้งโดยอัตโนมัติเมื่อเข้าสู่ระบบแก้ไข/etc/fstabและเพิ่มรายการต่อไปนี้:

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000

นี่คือสิ่งที่ฉันกำลังมองหา! ฉันสิ้นสุดการสร้างกลุ่มผู้ใช้ที่ใช้ร่วมกันสำหรับ apache2 และผู้ใช้ของฉันที่สามารถเข้าถึงโฟลเดอร์ที่เมาท์ได้ serverfault.com/questions/6895/...
thesmart

ขอบคุณ! โปรดทราบว่าฉันมีปัญหาใหญ่จนกระทั่งพบว่านั่น/sbin/mount.vboxsfเป็น symlink ที่ห้อยต่องแต่ง! ลบมันแล้วln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfแก้ไขปัญหา! การติดตั้งส่วนเพิ่มเติมของแขกอาจไม่สามารถเชื่อมโยงได้ ผมใช้เวลาห่างไกลเวลามากเกินไปหานี้!
csl

2
... ตอนนี้ปัญหาเดียวน่าจะเป็นที่ vboxsf ไม่จัดการ symlink! เช่นเดียวกับในคุณไม่สามารถสร้าง symlink ในโฟลเดอร์แชร์จาก VM! (อย่างน้อยใน OSX, VirtualBox 4.3.10
csl

ขั้นตอนนี้เป็นหนึ่งในไม่กี่คนที่พาคุณไปที่นั่น ในกรณีของฉันเมื่อฉันเปลี่ยนเป็นไดเรกทอรีที่ใช้ร่วมกันและลองใช้คำสั่ง ls เทอร์มินัลจะหยุดทำงาน
demongolem

4

ปัญหา - ปัญหาการอนุญาตใน vbox / ubuntu เข้าถึงไดรฟ์ที่ใช้ร่วมกับ OSX

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

เป้าหมายคือวิธีง่ายๆในการแชร์ไดเรกทอรีระหว่าง Mac และ Ubuntu น่าเสียดายที่ตัวอย่างที่ฉันเห็นมานั้นดูเหมือนจะซับซ้อนกว่าที่พวกเขาต้องการจริงๆและไม่ได้อธิบายสิ่งที่เป็นปัญหาจริงที่ต้องแก้ไข ฉันจะพยายามจัดการกับปัญหาทั้งสองที่นี่

สภาพแวดล้อมที่นี่คือ Mac ที่ใช้ OSX 10.9.5 โดยมี Virtual Box 4.3.16 กำลังใช้งาน Ubuntu-14.04.1 พร้อมติดตั้งส่วนขยายของผู้เยี่ยมชม สิ่งกันยายน 2014

ฉันคิดว่าปัญหาทั้งหมดที่นี่คือuidของไดเรกทอรีบน Mac และใน Ubuntu ต้องตรงกัน - gid เริ่มต้นที่กำหนดให้กับผู้ใช้และกลุ่มต่างจาก OSX และ Ubuntu และนั่นคือปัญหาที่เกิดขึ้น

ในการเข้าถึงไฟล์หนึ่งต้องเป็นเจ้าของมันหรือเป็นสมาชิกของกลุ่มที่เป็นเจ้าของ และเนื่องจากการเข้าถึงนั้นขึ้นอยู่กับหมายเลขรหัสของกลุ่มไม่ใช่ชื่อกลุ่มสิ่งที่จำเป็นคือการสร้างหมายเลขกลุ่มทั่วไปทั้งสองด้านที่ผู้ใช้เป็นเจ้าของ

นั่นคือสิ่งที่โซลูชันด้านล่างทำ อย่าเข้าใจผิดตามความยาวของสิ่งที่เขียนจริง ๆ แล้วมันง่ายมาก มีตัวอย่างมากมายที่เกิดขึ้น

ฉันกำลังจะพลิกระหว่างคอนโซลOSXและVBOXที่นี่ (mac และ virtual-box / ubuntu) ภายในเอกสารนี้ - ตรวจสอบให้แน่ใจว่าคุณเข้าใจว่าหน้าต่างของคุณเป็นแบบไหน

หมายเหตุสุดท้าย: โซลูชันที่แสดงด้านล่างนี้ใช้พื้นฐานการสร้างรหัสกลุ่มทั่วไประหว่างสภาพแวดล้อม OSX และ Ubuntu เพื่อให้การอนุญาตไฟล์ทำงานได้ อาจมีโซลูชั่นอื่น ๆ ที่ทันสมัยกว่า อันนี้ง่ายและเข้าใจจริงๆและวิ่งบนกระดูกเปลือยที่ไม่มีการตกแต่ง

OSX: —————

โปรดทราบว่ามีการทำบนตัวเครื่องใหม่ 10.9.5 Mac โดยที่ไม่ต้องใช้อะไรเลยไม่ได้เชื่อมต่อกับเครือข่ายขององค์กรไม่มีอะไรแปลกใหม่ที่จะทำงานบนมันนอกเหนือจากซอฟต์แวร์สต็อก มันง่ายเหมือนที่ได้รับ

เมื่อฉันได้ติดตั้งเริ่มต้นใน Mac, joe_publicเป็นผู้ดูแลระบบและโพสต์ของเขาถูกกำหนดให้501

Joes-MacBook-Pro:/ joe_public$ id
uid=501(joe_public) gid=20(staff) groups=20(staff),999(vboxsf),401(com.apple.sharepoint.group.1),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),501(access_bpf),33(_appstore),100(_lpoperator),204(_developer),398(com.apple.access_screensharing),399(com.apple.access_ssh)

โปรดสังเกตว่าuidคือ501 - นี่เป็นรหัสบัญชีเริ่มต้นแรกบน OSX - ไม่มีอะไรพิเศษ

ฉันสร้างบางไดเรกทอรีที่ฉันต้องการแชร์ในฝั่ง Mac - โปรดทราบว่าฉันไม่ได้ใส่ไว้ในไดเรกทอรีผู้ใช้ของฉันเพื่อเหตุผลในการสำรองข้อมูล

Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/shared
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/public 
Joes-MacBook-Pro:/ joe_public$ mkdir /vdisk/images

Joes-MacBook-Pro:vdisk joe_public$ ls -al
total 0
drwxr-xr-x   5 joe_public  admin   170 Oct  8 01:08 .
drwxrwxr-t  36 root        admin  1292 Oct  6 02:26 ..
drwxrwxrwx   2 joe_public  admin    68 Oct  6 01:08 images
drwxr-xr-x   3 joe_public  admin   102 Oct  8 01:07 public
drwxrwxrwx   4 joe_public  admin   136 Oct  8 00:45 shared

VBOX: ——————

กล่องเสมือนเริ่มต้นที่ง่ายและการติดตั้ง Ubuntu - อีกครั้งjoe_publicเป็นผู้ดูแลระบบเริ่มต้นที่สร้างขึ้นเมื่อฉันติดตั้ง Ubuntu

โปรดทราบอีกครั้งว่าพื้นที่ชื่อระหว่าง OSX และ Ubuntu แตกต่างอย่างสิ้นเชิง ไม่มีความสัมพันธ์ใด ๆ ระหว่างสองชื่อนี้

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ id
uid=1000(joe_public) gid=1000(joe_public)   groups=1000(joe_public),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),124(sambashare)

สร้างจุดเมานต์สามจุดโดยใช้การตั้งค่าของ Virtual Box -> Shared Folders gui

Name      Path              Auto-mount  Access
images    /vdisk/images     Yes         Full
public    /vdisk/pubic      Yes         Read-only
shared    /vdisk/shared     Yes         Full

หมายเหตุ: จริง ๆ แล้วฉันต้องรีบูตเซสชันของฉันเพื่อให้จุดเมานต์เหล่านี้ทั้งหมดขึ้นมา

joe_public@joe_public-ubuntu-VirtualBox:~$ mount | grep vboxsf
shared on /media/sf_shared type vboxsf (gid=999,rw)
public on /media/sf_public type vboxsf (gid=999,rw)
images on /media/sf_images type vboxsf (gid=999,rw)

โปรดสังเกตว่า gid สำหรับสิ่งเหล่านี้คือ 999 - นี่คือกลุ่มvboxsf

joe_public@joe_public-ubuntu-VirtualBox:~$ grep 999 /etc/group
vboxsf:x:999

สิ่งนี้ถูกกำหนดโดยอัตโนมัติโดย Virtual Box เวอร์ชัน 4.3.16 สำหรับเรา เอกสาร vbox แสดงให้เห็นถึงวิธีการเปลี่ยนแปลงสิ่งนี้หากคุณติดตั้งเส้นทางด้วยตนเองผ่านบรรทัดคำสั่ง แต่ใครจะจำได้ว่า - เพียงแค่ใช้ค่าเริ่มต้นที่ GUI บังคับให้เรา ..

แต่มันใช้งานไม่ได้ (คาดว่าจะถึงจุดนี้ - นั่นคือสิ่งที่เราพยายามแก้ไข)

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

โปรดทราบว่า ณ จุดนี้joe_publicไม่ใช่สมาชิกของกลุ่มvboxsf - และนั่นจะเป็นปัญหาจนกว่าเราจะแก้ไข FYI: นี่คือกลุ่มเริ่มต้นที่กำหนดให้กับบัญชีเมื่อสร้างขึ้น

joe_public@joe_public-ubuntu-VirtualBox:/media$ grep joe_public /etc/group
adm:x:4:syslog,joe_public
cdrom:x:24:joe_public
sudo:x:27:joe_public
dip:x:30:joe_public
plugdev:x:46:joe_public
lpadmin:x:108:joe_public
joe_public:x:1000:
sambashare:x:124:joe_public

ดังนั้นสิ่งที่เรามีอยู่ ณ จุดนี้ (เรายังไม่ได้ทำอะไรเพื่อแก้ไข)

•   On mac,   joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac,   vboxsf does not exist

เราไม่ต้องการเปลี่ยน gid ของผู้ใช้joe_publicทั้งสองข้างเนื่องจากเป็นปัญหาในตูดในระบบที่ติดตั้งแล้วและไม่ได้แก้ปัญหานี้สำหรับผู้ใช้รายอื่น ทางออกที่ง่ายที่สุดคือการสร้าง id กลุ่มที่ตรงกัน - vboxsf - บนฝั่ง mac และตรวจสอบให้แน่ใจว่าjoe_publicเป็นสมาชิกของทั้งสองฝ่าย

ดังนั้นยังคงอยู่บน VBox / อูบุนตูให้joe_publicเป็นสมาชิกของ 999 vboxsfกลุ่ม

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
joe_public@joe_public-ubuntu-VirtualBox:/$ grep 999 /etc/group
vboxsf:x:999:joe_public

ฉันคิดว่าฉันออกจากระบบบัญชีของฉันและกลับมาที่นี่อีกครั้งหลังจากฉันทำสิ่งนี้

OSX: —————

ตอนนี้เราต้องสร้างกลุ่มvboxsfบน mac ฉันสงสัยว่าชื่อจริงสร้างความแตกต่างได้ที่นี่ - เป็นรหัสกลุ่ม999ที่สำคัญ โปรดจำไว้ว่าการเว้นวรรคชื่อระบบไดเรกทอรี (รวมถึงชื่อผู้ใช้) นั้นแตกต่างกันระหว่างโฮสต์และระบบปฏิบัติการ VM แต่เพียงเพื่อทำให้ชีวิตมีชีวิตชีวาเราทุกคนเรียกมันว่าvboxsfบน mac เหตุผลเดียวกับที่ทำไมjoe_publicใช้ชื่อผู้ใช้ทั้งสองด้าน

OSX ไม่มีคำสั่งเพิ่มกลุ่มอย่างง่ายเหมือนกับที่ linux ทำดังนั้นให้ใช้คำสั่ง dscl เพื่อทำสิ่งนี้ในหลายขั้นตอน โปรดดูเอกสารประกอบของ mac os สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้ โปรดสังเกตว่าเราสร้างกลุ่ม vboxsf และเพิ่ม joe_public ในกลุ่มนั้นที่นี่

sudo dscl . -create /Groups/vboxsf
sudo dscl . -create /Groups/vboxsf name vboxsf
sudo dscl . -create /Groups/vboxsf passwd "*”
sudo dscl . -create /Groups/vboxsf gid 999
sudo dscl . -create /Groups/vboxsf GroupMembership joe_public

ดังนั้น ณ จุดนี้เราควรมี

•   On mac, joe_public gid is 501
•   On linux, joe_public gid is 1000
•   On linux, vboxfs gid is 999
•   On mac, vboxsf gid is 999
•   On linux, joe_public is member of vboxsf 
•   On mac, joe_public is member of vboxsf

หลักฐานที่นี่คือถ้ามันทำงาน - นั่นคือขั้นตอนต่อไป

VBOX: ——————

cd ในไดเรกทอรีของเราแล้วแตะไฟล์

joe_public@joe_public-ubuntu-VirtualBox:/$ cd /media/sf_shared
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ touch foo

ตรวจสอบว่าเราสร้างไฟล์สำเร็จ

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  102 Oct  8 00:44 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

OSX: —————

Joes-MacBook-Pro:shared joe_public$ cd /vdisk/shared
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  3 joe_public  vboxsf  102 Oct  8 00:44 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:44 foo

Joes-MacBook-Pro:shared joe_public$ touch bar
Joes-MacBook-Pro:shared joe_public$ ls -al
total 0
drwxrwxrwx  4 joe_public  vboxsf  136 Oct  8 00:45 .
drwxr-xr-x  6 joe_public  admin   204 Oct  8 00:17 ..
-rw-r--r--  1 joe_public  vboxsf    0 Oct  8 00:45 bar

VBOX: ——————

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -al
total 4
drwxrwx--- 1 root vboxsf  136 Oct  8 00:45 .
drwxr-xr-x 5 root root   4096 Oct  8 00:30 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

ดูเหมือนว่าทุกอย่างจะทำงาน ..

VBOX: —————— การยืนยันขั้นสุดท้าย

สิ่งที่เรากำลังตรวจสอบที่นี่คือสิ่งทั้งหมดนี้ขึ้นอยู่กับผู้ใช้joe_publicซึ่งเป็นสมาชิกของกลุ่มvboxsf - และวิธีที่ง่ายที่สุดคือการลบjoe_publicออกจากกลุ่ม

การลบผู้ใช้joe_publicจากกลุ่มvboxsf

joe_public@joe_public-ubuntu-VirtualBox:~$ sudo gpasswd -d joe_public vboxsf
log out/in ubuntu

ดูว่าเราสามารถเข้าถึงไดเรกทอรีของเราได้หรือไม่และนี่เป็นการพิสูจน์ว่าเป็นปัญหาการอนุญาตกลุ่ม

joe_public@joe_public-ubuntu-VirtualBox:/$ ls /media/sf_shared
ls: cannot open directory /media/sf_shared: Permission denied

เพิ่มผู้ใช้กลับสู่vboxsf

joe_public@joe_public-ubuntu-VirtualBox:/$ sudo usermod -a -G vboxsf joe_public
log out/in ubuntu

มันทำงานได้อีกครั้ง!

joe_public@joe_public-ubuntu-VirtualBox:~$ ls -al /media/sf_shared
total 4
drwxrwx--- 1 root vboxsf  170 Oct  8 01:48 .
drwxr-xr-x 6 root root   4096 Oct  8 01:25 ..
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:45 bar
-rwxrwx--- 1 root vboxsf    0 Oct  8 00:44 foo

VBOX: - อีกหนึ่งปัญหา - ลิงก์สัญลักษณ์ใน vbox -------

หากคุณเข้าสู่/ media / sf_sharedคุณจะพบว่าลิงก์สัญลักษณ์ในไดเรกทอรีที่แชร์นั้นใช้งานไม่ได้ นี่เป็นปัญหาใหญ่จริง ๆ ถ้าคุณพยายามตั้งค่าสภาพแวดล้อมการพัฒนา linux แบบเต็มบนไดรฟ์ที่ใช้ร่วมกัน

joe_public@joe_public-ubuntu-VirtualBox:/media$ cd sf_images
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ls
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ mkdir test
joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2
ln: failed to create symbolic link ‘test2’: Read-only file system

ตามค่าเริ่มต้นลิงก์สัญลักษณ์จะไม่ได้รับการสนับสนุนจากการแชร์กล่องเสมือน ดูคำอธิบายด้านล่าง โดยพื้นฐานแล้วฉันเข้าใจแล้วลิงก์สัญลักษณ์เป็นช่องโหว่ที่ "คงที่" ในกล่องเสมือนโดยปิดการใช้งานการสนับสนุนในกรอบเวลา 4.1.8 (2011) ฉันใช้ 4.3.16 ที่นี่ ...

https://www.virtualbox.org/ticket/10085

http://ahtik.com/blog/fixing-your-virtualbox-shared-folder-symlink-error/

โชคดีที่มีประตูหลังเพื่อเปิดใช้งานอีกครั้งผ่านคำสั่งVBoxManageของโฮสต์ เช่นเคยโปรดเข้าใจช่องโหว่ที่นี่ที่คุณอาจเปิดอยู่ ฉันใช้เครื่องมือพัฒนาแบบสแตนด์อะโลนดังนั้นนี่จึงไม่ใช่ปัญหา

OSX: ------------

Joes-MacBook-Pro:shared pbradstr$ VBoxManage setextradata Ubuntu VBoxInternal2/SharedFoldersEnableSymlinksCreate/shared 1   

หมายเหตุ: Ubuntuเป็นชื่อ vm ของฉันและการแบ่งปันคือชื่อไดเรกทอรีที่ใช้ร่วมกัน

คุณจะได้รับชื่อ vm ดังนี้:

Joes-MacBook-Pro:shared pbradstr$ VBoxManage list vms
"Ubuntu" {8461045a-1cee-4d44-8148-05920a47cee0}
Joes-MacBook-Pro:shared pbradstr$

และชื่อโฟลเดอร์ที่แชร์ไม่ว่าจะผ่าน Virtual Box gui หรือ

Joes-MacBook-Pro:shared pbradstr$ VBoxManage showvminfo Ubuntu | grep -A 5 "Shared folders"
Shared folders:  

Name: 'shared', Host path: '/vdisk/shared' (machine mapping), writable
Name: 'public', Host path: '/vdisk/public' (machine mapping), readonly
Name: 'images', Host path: '/vdisk/images' (machine mapping), writable

ฉันรีบูตระบบกล่องเสมือนทั้งหมดที่นี่ฉันไม่ได้เข้าใจถึงความต้องการขั้นต่ำสำหรับการใช้งาน

อย่างไรก็ตามในการทดสอบนี้กลับไปที่หน้าต่าง vbox ของคุณ

VBOX: ---------

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_images$ ln -s test test2

ไม่มีข้อผิดพลาด - และเพื่อยืนยัน

joe_public@joe_public-ubuntu-VirtualBox:/media/sf_shared$ ls -ald test*
drwxrwx--- 1 root vboxsf 102 Oct  8 11:33 test
lrwxrwx--- 1 root vboxsf   4 Oct  8 13:10 test2 -> test

OSX: ----------

และกลับมาทางด้าน mac - เพียงเพื่อพิสูจน์ว่ามันใช้ได้ดี

Joes-MacBook-Pro:shared pbradstr$ ln -s test test3
Joes-MacBook-Pro:shared pbradstr$ ls -ald test*
drwxr-xr-x  4 joe_public  admin  136 Oct  8 13:20 test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:10 test2 -> test
lrwxr-xr-x  1 joe_public  admin    4 Oct  8 13:21 test3 -> test

โปรดทราบว่าฉันเพิ่งทดสอบสิ่งนี้บนโฮสต์ OSX และไคลเอ็นต์กล่องเสมือน Ubuntu การอ้างอิงที่ฉันระบุไว้ข้างต้นดูเหมือนจะบ่งชี้ว่าอาจมีปัญหาในการใช้โฮสต์ที่ใช้ Windows

ซ้ายการออกกำลังกายสำหรับนักเรียน ———————

ประโยชน์ของวิธีการที่กล่าวข้างต้นคือสามารถทำงานบนเครื่องสแตนด์อะโลนโดยไม่ต้องเข้าถึงเครือข่าย แต่ถ้าคุณคิดเกี่ยวกับเรื่องนี้ปัญหา name-verses-id จะต้องเป็นปัญหาที่พบบ่อยระหว่างสภาพแวดล้อมการคำนวณที่ต่างกัน

มีวิธีแก้ไขปัญหาอื่นใดอีกบ้างที่มีวิธีแก้ไขปัญหานั้น ๆ - สิ่งต่าง ๆ เช่น Active Directory (ผลิตภัณฑ์ Microsoft) และสิ่งที่คล้ายกันอาจสามารถแก้ไขปัญหานี้ได้ มันจะน่าสนใจที่จะได้รับชุดของการแก้ปัญหาเหล่านั้นและเปรียบเทียบคุณสมบัติต่างๆและการแลกเปลี่ยน


3

สำหรับฉันทั้งหมดที่ฉันต้องทำคือ:

sudo adduser [username] vboxsf

นั่นก็เพียงพอแล้วสำหรับฉันในการเข้าถึงโฟลเดอร์ที่แชร์ โฟลเดอร์มีกลุ่มของ vboxsf ผู้ใช้จะต้องกำหนดให้กับกลุ่มนั้นเพื่อเข้าถึง หากคุณต้องการตั้งค่าการเข้าถึงที่เข้มงวดมากขึ้นหรือการเข้าถึงที่ควบคุมได้มากขึ้นคุณอาจต้องดำเนินการตามขั้นตอนของการติดตั้งด้วยตนเองโดยใช้รหัสผู้ใช้ที่ถูกต้อง

สำหรับฉันโซลูชัน fstab ไม่ทำงานและทำให้เครื่องไม่สามารถบู๊ตได้อย่างถูกต้อง


3

หลังจากที่คุณสร้างโฟลเดอร์แชร์ในการตั้งค่า Virtualbox อูบุนตูจะทำการติดตั้งอัตโนมัติสำหรับคุณในครั้งต่อไปที่คุณบูทระบบ (คุณจะเห็นไอคอนบนเดสก์ท็อปของคุณ)

ป้อนคำอธิบายรูปภาพที่นี่

แต่ถ้าคุณไม่ได้ใช้บัญชีรูทคุณจะไม่ได้รับอนุญาตให้เข้าถึง สิ่งที่คุณต้องทำคือการเพิ่มบัญชีผู้ใช้ของคุณไปยังกลุ่มผู้ใช้ชื่อ 'vboxsf':

sudo usermod -G vboxsf -a $USER

จากนั้นออกจากระบบและลงชื่อเข้าใช้อีกครั้ง คุณสามารถเข้าถึงโฟลเดอร์ที่แชร์ได้ในขณะนี้


3

ตั้งแต่ VirtualBox v4.0 เป็นเรื่องง่ายที่จะแก้ปัญหาการอนุญาตเหล่านี้! คุณไม่จำเป็นต้องกังวลเกี่ยวกับmkdir, mount, chmod, umaskฯลฯ เพื่อเข้าถึงโฟลเดอร์อัตโนมัติติดตั้งร่วมกันของคุณ (ซึ่งปรากฏใน/mediaที่มีsf_คำนำหน้าโดยค่าเริ่มต้น) มีเพียงสิ่งหนึ่งที่คุณต้องทำ: เพิ่มชื่อผู้ใช้ของคุณไปยังกลุ่มผ่านทางvboxsfsudo usermod -a -G vboxsf [username]

เพื่อความสะดวกคุณอาจต้องการสร้างลิงก์สัญลักษณ์ไปยังโฟลเดอร์ที่แชร์ภายในโฟลเดอร์ของคุณhome(เช่นln -s /media/sf_Stuff ~/Stuff)

ที่มา: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


จุดดีเกี่ยวกับลิงค์สัญลักษณ์
Shaun Dychko

0

ฉันพบสิ่งนี้ฉันทดสอบและใช้งานได้ใน Ubuntu และ Xubuntu เพียงคุณลักษณะ automount ไม่ได้ผลสำหรับฉัน

I. ติดตั้งข้อมูลเพิ่มเติมของแขก

ประการแรกจำเป็นต้องติดตั้ง VirtualBox ของ Guest Additions เข้าสู่ระบบโฮสต์:

เลือกในเมนูของ VitualBox: อุปกรณ์ -> ติดตั้งข้อมูลเพิ่มเติมของแขก ...

ติดตั้ง ISO ใหม่สำหรับระบบโฮสต์ ซีดีใหม่จะปรากฏใน Ubuntu (หรือติดตั้ง) รันเป็นรูทสคริปต์การติดตั้ง VBoxLinuxAdditions-x86.run (เพราะเป็น Mac ที่ใช้ Intel) ในหน้าต่าง Terminal:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

คุณอาจถูกขอให้รีสตาร์ท Ubuntu

การติดตั้ง Guest Additions นั้นมีข้อดีหลายอย่างเช่นการใช้ความละเอียดหน้าจอ (ขนาดหน้าต่างของคุณคือความละเอียดของระบบเช่นไม่มีแถบเลื่อน) โหมดเมาส์ง่าย (ไม่จำเป็นต้องกดปุ่มคำสั่งด้านซ้ายเพื่อปล่อยเคอร์เซอร์เมาส์) และสิ่งที่เรากำลังมองหา สำหรับโฟลเดอร์ที่แบ่งปัน

ครั้งที่สอง สร้างโฟลเดอร์ที่ใช้ร่วมกัน

เป้าหมายคือการเข้าถึงโฟลเดอร์ที่แชร์สิ่งที่เป็นวิธีที่ง่ายกว่าการใช้ sshd หรือ Samba

เลือกในเมนูของ VitualBox: อุปกรณ์ -> โฟลเดอร์ที่ใช้ร่วมกัน ...

  • คลิกที่ปุ่มเพิ่มโฟลเดอร์ที่แบ่งปันใหม่
  • เลือกเส้นทางโฟลเดอร์ - โฟลเดอร์บนฮาร์ดไดรฟ์ Mac ของคุณเช่น / Users / ondrej / Pictures
  • เลือกชื่อโฟลเดอร์ - ชื่อที่ระบุโฟลเดอร์ที่แชร์นี้ใน Ubuntu (เป็นระบบโฮสต์) เช่นรูปภาพ
  • เลือกทำให้เป็นแบบถาวร - หากคุณต้องการยืนยันข้อกำหนดของโฟลเดอร์ที่แชร์นี้
  • คลิกที่ตกลง
  • คลิกตกลงเพื่อปิดรายการโฟลเดอร์ที่ใช้ร่วมกัน

III เมานต์โฟลเดอร์แชร์

เมาท์โฟลเดอร์แชร์ที่สร้างขึ้นไปยังโฟลเดอร์ที่มีสิทธิ์อนุญาตสำหรับผู้ใช้ มาเปิดหน้าต่าง Terminal บน Ubuntu และ:

สร้างโฟลเดอร์ที่จะทำการติดตั้งโฟลเดอร์แชร์ (ข้ามขั้นตอนนี้หากมีโฟลเดอร์อยู่แล้ว)

mkdir DIR

เช่น (ใน / tmp)

mkdir share

รับรหัสผู้ใช้ของคุณ:

id

ผลลัพธ์จะเป็นอย่างไร:

uid=1000(ondrej)gid=1000(ondrej)groups=4(adm),20(dialout),24(cdrom),
46(plugdev),112(lpadmin),119(admin),120(sambashare),1000(ondrej)

ดังนั้น uid ของผู้ใช้ของฉันคือ 1,000 เมานต์โฟลเดอร์แชร์ SHARED_FOLDER_NAME ลงในโฟลเดอร์ MOUNTED_FOLDER ด้วยความเป็นเจ้าของสำหรับผู้ใช้ที่มี uid USER_ID เป็นรูท:

sudo mount -t vboxsf -o uid=USER_ID SHARED_FOLDER_NAME MOUNTED_FOLDER

เช่น

sudo mount -t vboxsf -o uid=1000 pictures /tmp/share

การระบุพารามิเตอร์ uid เปิดใช้งานการเขียนไปยังโฟลเดอร์ที่แชร์สำหรับผู้ใช้ของคุณ MOUNTED_FOLDER โฟลเดอร์ที่เมานท์ (เช่น / tmp / share) มีไฟล์จากโฟลเดอร์ที่แชร์บนฮาร์ดไดรฟ์ Mac ของคุณ เป็นไปได้ที่จะเขียนไปยังโฟลเดอร์แชร์เช่นกัน เป็นทางเลือกโฟลเดอร์ที่ใช้ร่วมกันสามารถติดตั้งโดยอัตโนมัติเมื่อเริ่มต้นเครื่องเสมือน เพิ่มบรรทัดต่อไปนี้ในไฟล์ / etc / fstab (เป็น root เช่น sudo vim / etc / fstab):

SHARED_FOLDER_NAME /PATH/TO/MOUNTED/FOLDER vboxsf uid=1000,gid=1000 0 0

เช่น

pictures /tmp/share vboxsf uid=1000,gid=1000 0 0

โดยที่ค่า uid และ gid สามารถพบได้ในผลลัพธ์ของคำสั่ง id (ดูขั้นตอนที่ 2 สำหรับตัวอย่างโดยละเอียด) โฟลเดอร์แชร์จะใช้งานได้หลังจากรีสตาร์ทเครื่องเสมือน

ที่มา: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-shared-folders/


0

โฮสต์ระบบปฏิบัติการ : macOS
VM (แขก) ระบบปฏิบัติการ : เซิร์ฟเวอร์ Ubuntu 16.04.5 LTS
VirtualBox v5.2.18
ทั้งระบบปฏิบัติการโฮสต์และระบบปฏิบัติการทั่วไปต้องมีผู้ใช้เดียวกัน (เพิ่มเติมในข้อความ: ชื่อผู้ใช้ )

ขั้นที่ 1: ติดตั้งVirtualBox บุคคลทั่วไปเพิ่มขึ้น :

1.1 ค้นหาการเพิ่มแขก VirtualBox

$ cd /Applications/VirtualBox.app/Contents/MacOS/
$ cp VBoxGuestAdditions.iso ~/Downloads/

1.2 เริ่ม VM

1.3 คลิกที่ไอคอนซีดีในแถบงานด้านล่างขวา

1.4 เลือก "เลือกดิสก์อิมเมจ ... " "และค้นหา VBoxGuestAdditions.iso

1.5 ในประเภทเทอร์มินัลแขก (คุณสามารถทำได้จากโฮสต์เทอร์มินัลหากคุณใช้ SSH)

$ sudo su
$ apt update
$ apt upgrade
$ apt-get install dkms build-essential linux-headers-generic gcc make
$ mount /dev/cdrom /mnt
$ cd /mnt
$ sh ./VBoxLinuxAdditions.run
$ reboot

ขั้นตอนที่ 2: การตั้งค่าโฟลเดอร์แชร์

2.1 สร้างกฎใน VM:

  • หยุด VM
  • ไปที่ Settings > Shared Folders
  • คลิกที่ Add new port forwarding ruleปุ่มสีเขียวที่ด้านบนขวาของหน้าต่าง
  • ค้นหาและเลือกโฟลเดอร์ที่คุณต้องการแบ่งปัน (เช่น: / path / to / shared / host_folder )
  • เลือกAuto-mountและMake Permanentตัวเลือก
  • เริ่ม VM

2.2 ในการเมานต์โฟลเดอร์แชร์ใน/optคุณต้องสร้างshared_folder_dirโฟลเดอร์ย่อยและตั้งค่าการอนุญาตที่เหมาะสม:

$ sudo mkdir -p /opt/shared_folder_dir
$ sudo chmod ug+w -Rv /opt/shared_folder_dir
$ sudo chown username:username -Rv /opt/shared_folder_dir

2.3 เพิ่มชื่อผู้ใช้ไปยังกลุ่มvboxsf :

$ sudo adduser username vboxsf
$ sudo usermod -a -G vboxsf username

2.4 รีบูต VM เพื่อใช้การเปลี่ยนแปลง:

$ sudo reboot

ขั้นตอนที่ 3: การติดตั้งอัตโนมัติhost_folderเป็น/opt/shared_folder_dir:

3.1 เปลี่ยน /etc/rc.local ของ VM:

$ sudo nano /etc/rc.local

และวางที่ด้านล่างขวาexit 0:

# 'folder_name' = given in the shared folders configuration
# 'path/to/shared/folders' = guest path to access the shared folders from
# 'id' = prints uid/gid
# sudo mount -t vboxsf -o uid={uid},gid={gid} {shared_folder_name} {path/to/shared/folder}
sleep 5
sudo mount -t vboxsf -o uid=1000,gid=1000 host_folder /opt/shared_folder_dir
exit 0
<<< EOF >>>

หมายเหตุ: ฉันได้เพิ่มsleep 5การดำเนินการเมานต์หลังจากที่ VirtualBox Guest Additions เริ่มต้นแล้ว คุณสามารถตรวจสอบตามjournalctl -bคำสั่ง

3.2 รีบูต VM เพื่อใช้การเปลี่ยนแปลง:

$ sudo reboot

ดูสิ่งนี้ด้วย


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