वर्चुअल बॉक्स VM में सही अनुमतियों के साथ चलने वाले Ubuntu के साथ निर्देशिकाओं को साझा करने का सही तरीका क्या है?


23

वर्चुअलबॉक्स में, ओएस एक्स होस्ट और उबंटू अतिथि के बीच एक निर्देशिका साझा करने का सबसे अच्छा तरीका क्या है?

  • होस्ट: मैक ओएस एक्स 10.7.3
  • अतिथि: Ubuntu 12.04
  • अतिथि के पास वर्चुअलबॉक्स सेटिंग्स के माध्यम से एक्सेस = फुल और ऑटो-माउंट = हां के साथ एक साझा निर्देशिका है ।

इस सेटअप की समस्या नीचे दी गई है। मेरी साझा निर्देशिका में, मैं अनुमतियों को बिल्कुल नहीं बदल सकता (न कि अनुमतियों ने त्रुटि से इनकार किया, लेकिन वे अभी प्रभावी नहीं हैं)।

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

मैक ओएस एक्स 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 +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>, srcVBox शेयर का नाम है, और /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यह एक झूलने वाला सिमलिंक था! इसे मिटाकर और फिर ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfसमस्या हल हो गई! अतिथि परिवर्धन की स्थापना शायद इसे सहानुभूति देने में सक्षम नहीं थी। मैं बिताया अब तक बहुत ज्यादा समय इस पता लगाना!
सीएसएल

2
... अब एकमात्र समस्या यह प्रतीत होती है कि vboxsf सिम्लिंक संभालती नहीं है! जैसा कि, आप VM से साझा किए गए फ़ोल्डर में सिमलिंक नहीं बना सकते हैं! (कम से कम OSX पर, वर्चुअलबॉक्स 4.3.10
सीएसएल

यह प्रक्रिया निश्चित रूप से आपको वहां पाने के लिए कुछ में से एक है। मेरे मामले में, हालांकि, जब मैं साझा निर्देशिका में बदल जाता हूं और एक 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

लक्ष्य मैक और उबंटू वातावरण के बीच निर्देशिकाओं को साझा करने का एक सरल तरीका है। दुर्भाग्य से मैंने अब तक जो उदाहरण देखे हैं, वे वास्तविक होने की तुलना में थोड़े अधिक जटिल हैं, और वास्तव में यह नहीं समझाते हैं कि वास्तविक समस्या को हल करने की आवश्यकता क्या है। मैं उन दोनों मुद्दों को यहाँ संभालने का प्रयास करूँगा।

यहां का वातावरण मैक मैक ओएसएक्स 10.9.5 है, जिसमें वर्चुअल बॉक्स 4.3.16 उबंटू -14.04.1 निष्पादित है, जिसमें अतिथि एक्सटेंशन स्थापित हैं। सितंबर 2014 सामान।

मुझे लगता है कि यहां पूरी समस्या यह है कि मैक पर निर्देशिकाओं का uid , और उबंटू में मेल खाना चाहिए - उपयोगकर्ता और समूहों के लिए डिफ़ॉल्ट gid का असाइनमेंट OSX और Ubuntu के बीच भिन्न होता है, और यहीं परेशानी निहित है।

किसी फ़ाइल तक पहुँचने के लिए, किसी को इसका स्वामी होना चाहिए, या इसके स्वामित्व वाले समूह का सदस्य होना चाहिए। और जैसा कि पहुंच वास्तव में समूह की आईडी संख्या पर आधारित है, न कि समूह के नाम पर, यह सब आवश्यक है कि दोनों तरफ एक सामान्य समूह संख्या बनाई जाए, जो उपयोगकर्ताओं के हैं।

ठीक यही उपाय नीचे दिया गया है। क्या लिखा है की लंबाई से गुमराह न हो, यह वास्तव में बहुत सरल है। अभी बहुत सारे और बहुत सारे उदाहरण हैं जो चल रहे हैं।

मैं इस डॉक्टर के भीतर OSX और VBOX कंसोल (मैक और वर्चुअल-बॉक्स / ubuntu) के बीच फ़्लिप करने जा रहा हूं - सुनिश्चित करें कि आप समझते हैं कि आपकी विंडो किस में है।

अंतिम नोट: नीचे दिखाया गया समाधान OSX और उबंटू वातावरण के बीच एक सामान्य समूह आईडी की स्थापना पर आधारित है, ताकि फ़ाइल अनुमतियाँ काम करें। अन्य, अधिक आधुनिक समाधान हो सकते हैं। यह वास्तव में सरल और समझ में आता है, और नंगे हड्डियों के आधार पर चलता है।

OSX: -

ध्यान दें कि बॉक्स 10.9.5 मैक के एक ताजा आउट पर किया गया था, उस पर कुछ भी नहीं, कॉर्पोरेट नेटवर्क से जुड़ा नहीं है, स्टॉक सॉफ्टवेयर के अलावा उस पर चलने वाले कुछ भी फैंसी नहीं है। यह उतना ही सरल है जितना कि यह मिलता है।

जब मैंने मैक पर डिफ़ॉल्ट इंस्टॉल किया, 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)

सूचना है कि यूआईडी है 501 - इस पर OSX डिफ़ॉल्ट पहला खाता आईडी है - कुछ भी नहीं विशेष

मैंने कुछ निर्देशिकाएँ बनाईं जिन्हें मैं मैक साइड पर साझा करना चाहता हूं - ध्यान दें कि मैंने उन्हें बैकअप कारणों से अपनी उपयोगकर्ता निर्देशिका के अंतर्गत नहीं रखा था।

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)

वर्चुअल बॉक्स की सेटिंग -> साझा फ़ोल्डर 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

यह हमारे लिए वर्चुअल बॉक्स संस्करण 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

हम किसी भी तरफ उपयोगकर्ता joe_public के gid को बदलना नहीं चाहते हैं , क्योंकि पहले से ही स्थापित सिस्टम पर गधे में दर्द है, और अन्य उपयोगकर्ताओं के लिए इसका समाधान नहीं है। - सरल समाधान एक मिलान समूह आईडी बनाने के लिए है vboxsf - पर मैक ओर, और सुनिश्चित करें कि joe_public दोनों पक्षों पर यह का एक सदस्य है।

तो, अभी भी vbox / ubuntu पर, 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 ग्रुप बनाने की जरूरत है । मुझे संदेह है कि नाम वास्तव में यहां एक अंतर बनाता है - यह 999 समूह आईडी है जो महत्वपूर्ण है। कृपया याद रखें कि होस्ट और VM ऑपरेटिंग सिस्टम के बीच डायरेक्टरी सिस्टम नेम स्पेस (साथ ही यूजर नेम) अलग-अलग हैं। लेकिन सिर्फ जीवन को समझदार बनाने के लिए, हम सभी इसे मैक पर vboxsf कहते हैं । समान तर्क क्यों joe_public का उपयोग दोनों तरफ के उपयोगकर्ता नाम के साथ किया जाता है।

OSX में एक साधारण ऐड ग्रुप कमांड नहीं है जैसे linux करता है - इसलिए dscl कमांड का उपयोग कई चरणों में करने के लिए करें। कृपया इस पर अधिक जानकारी के लिए मैक ओएस प्रलेखन देखें। ध्यान दें कि हम 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: ———————

हमारी निर्देशिका में सीडी और एक फ़ाइल को स्पर्श करें

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 को हटा दिया जाए

समूह vboxsf से उपयोगकर्ता joe_public को हटा रहा है

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 में प्रतीकात्मक लिंक -------

यदि आप / मीडिया / sf_sared में जाते हैं , तो आप पाएंगे कि साझा निर्देशिकाओं में प्रतीकात्मक लिंक बस काम नहीं करते हैं। यह एक बहुत बड़ी समस्या है यदि आप एक साझा ड्राइव पर पूर्ण लिनक्स विकास वातावरण स्थापित करने का प्रयास कर रहे हैं।

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   

नोट: उबंटू मेरे vm का नाम है, और साझा साझा निर्देशिका नाम है।

आप इस तरह से vm नाम प्राप्त कर सकते हैं:

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

और साझा किए गए फ़ोल्डर का नाम, या तो वर्चुअल बॉक्स गुई के माध्यम से, या

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: ----------

और वापस मैक की तरफ - बस यह साबित करने के लिए कि यह सब काम करता है

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 होस्ट और उबंटू वर्चुअल बॉक्स क्लाइंट पर यह परीक्षण किया है। जिन संदर्भों को मैंने ऊपर सूचीबद्ध किया था, उनसे प्रतीत होता है कि विंडोज आधारित होस्ट को चलाने में कोई समस्या हो सकती है।

छात्र के लिए एक्सर्साइज़ - ————

ऊपर सूचीबद्ध विधि का लाभ यह है कि यह एक स्टैंड-वे मशीन पर चल सकता है, जिसमें कोई नेटवर्क एक्सेस नहीं है। लेकिन अगर आप इस बारे में सोचते हैं, तो यह नाम-छंद-आईडी समस्या किसी भी विषम कंप्यूटिंग वातावरण के बीच एक आम समस्या बन गई है।

उस समस्या के समाधान कहाँ उपलब्ध हैं अन्य कौन से समाधान हैं? - एक्टिव डायरेक्टरी (एक Microsoft उत्पाद) जैसी चीज़ें और इसे हल करने में सक्षम हो सकती है। यह दिलचस्प होगा कि उन समाधानों का एक संग्रह प्राप्त किया जाए और विभिन्न सुविधाओं और व्यापारों की तुलना की जाए।


3

मेरे लिए मुझे बस इतना करना चाहिए था:

sudo adduser [username] vboxsf

मेरे लिए साझा फ़ोल्डरों तक पहुंचने के लिए पर्याप्त था। फ़ोल्डर में vboxsf का एक समूह होता है, उपयोगकर्ता को एक्सेस प्राप्त करने के लिए केवल उस समूह को सौंपा जाना चाहिए। यदि आपको अधिक सख्त पहुँच या अधिक नियंत्रणीय पहुँच सेट करने की आवश्यकता है, तो आपको सही उपयोगकर्ता-एस के साथ इसे मैन्युअल रूप से माउंट करने के चरणों से गुजरना पड़ सकता है।

मेरे लिए fstab समाधान काम नहीं किया और मशीन को सही ढंग से बूट नहीं करने का कारण बना।


3

वर्चुअलबॉक्स सेटिंग्स में एक साझा फ़ोल्डर बनाने के बाद, अगली बार जब आप सिस्टम को बूट करेंगे (तो आप अपने डेस्कटॉप पर एक आइकन देखेंगे)।

यहाँ छवि विवरण दर्ज करें

लेकिन यदि आप रूट खाते का उपयोग नहीं कर रहे हैं, तो आपको इसे एक्सेस करने की अनुमति नहीं होगी। आपको अपने उपयोगकर्ता खाते को 'vboxsf' नामक उपयोगकर्ता समूह में जोड़ने की आवश्यकता है:

sudo usermod -G vboxsf -a $USER

फिर लॉगआउट करें और फिर से लॉगिन करें। आप अब साझा किए गए फ़ोल्डर तक पहुंच सकते हैं।


3

जब से VirtualBox v4.0, इन अनुमतियों के मुद्दों को हल करना आसान है! आप के बारे में चिंता करने की जरूरत नहीं है mkdir, mount, chmod, umask, आदि अपने ऑटो पर लगे साझा फ़ोल्डर (जो में दिखाई देते हैं का उपयोग करने के /mediaसाथ sf_डिफ़ॉल्ट रूप से उपसर्गों), वहाँ केवल एक बात आपको बस इतना करना है: अपने उपयोगकर्ता नाम जोड़े vboxsfके माध्यम से समूह sudo usermod -a -G vboxsf [username]

सुविधा के लिए, आप अपने homeफ़ोल्डर के भीतर उन साझा किए गए फ़ोल्डरों के लिए प्रतीकात्मक लिंक बनाना चाहते हैं (जैसे, ln -s /media/sf_Stuff ~/Stuff)।

स्रोत: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


प्रतीकात्मक लिंक के बारे में अच्छी बात है।
शॉन ढिकोको

0

मुझे यह पता चला, मैंने परीक्षण किया और इसने उबंटू और जुबांटु में काम किया, बस ऑटोमेट फीचर ने मेरे लिए काम नहीं किया

I. अतिथि परिवर्धन स्थापित करें

सबसे पहले, वर्चुअलबॉक्स के गेस्ट एडिशंस को होस्ट सिस्टम में इंस्टॉल करना आवश्यक है:

VitualBox के मेनू में चुनें: डिवाइस -> अतिथि परिवर्धन स्थापित करें ...

यह होस्ट सिस्टम के लिए एक नया आईएसओ माउंट करता है। उबंटू में एक नई सीडी दिखाई देती है (या इसे माउंट करें)। मूल VBoxLinuxAdditions-x86.run स्थापना स्क्रिप्ट के रूप में चलाएं (क्योंकि यह एक इंटेल आधारित मैक है) एक टर्मिनल विंडो में:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

संभवतः आपको उबंटू को फिर से शुरू करने के लिए कहा जाएगा।

अतिथि परिवर्धन को स्थापित करने के कई फायदे हैं जैसे स्क्रीन रिज़ॉल्यूशन को अपनाना (आपकी विंडो का आकार सिस्टम रिज़ॉल्यूशन, यानी नो स्क्रोलबार), आसान माउस मोड (माउस कर्सर को रिलीज़ करने के लिए बाएं कमांड बटन को दबाने की कोई ज़रूरत नहीं है) और, हम जो देख रहे हैं। साझा किए गए फ़ोल्डर के लिए।

द्वितीय। साझा फ़ोल्डर बनाएँ

लक्ष्य एक साझा फ़ोल्डर का उपयोग करना है, जो sshd या सांबा का उपयोग करने से आसान तरीका है।

VitualBox के मेनू में चुनें: डिवाइस -> साझा फ़ोल्डर ...

  • नए साझा किए गए फ़ोल्डर बटन जोड़ें पर क्लिक करें।
  • एक फ़ोल्डर पथ चुनें - अपने मैक हार्डड्राइव पर एक फ़ोल्डर, जैसे / उपयोगकर्ता / ondrej / चित्र।
  • एक फ़ोल्डर नाम चुनें - एक नाम जो इस साझा फ़ोल्डर को उबंटू (एक मेजबान प्रणाली के रूप में) की पहचान करता है, उदाहरण के लिए चित्र।
  • मेक परमानेंट का चयन करें - यदि आप इस साझा फ़ोल्डर की परिभाषा को जारी रखना चाहते हैं।
  • ओके पर क्लिक करें।
  • साझा किए गए फ़ोल्डर की सूची को बंद करने के लिए ठीक क्लिक करें।

तृतीय। माउंट साझा फ़ोल्डर

अपने उपयोगकर्ता के लिए अनुमतियों के साथ एक फ़ोल्डर में बनाया साझा फ़ोल्डर माउंट करें। आइए उबंटू पर एक टर्मिनल विंडो खोलें और:

एक फ़ोल्डर बनाएं जहां साझा फ़ोल्डर माउंट किया जाएगा। (यदि इसके लिए पहले से ही एक फ़ोल्डर है, तो इस चरण को छोड़ दें।)

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)

मेरे उपयोगकर्ता का यूआईडी 1000 है। साझा किए गए फ़ोल्डर को साझा करें SHARED_FOLDER_NAME को फ़ोल्डर में माउंट करें MOUNTED_FOLDER उपयोगकर्ता के लिए स्वामित्व के साथ 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

यूआईडी पैरामीटर निर्दिष्ट करना आपके उपयोगकर्ता के लिए साझा किए गए फ़ोल्डर में लिखने में सक्षम बनाता है। माउंट किए गए फ़ोल्डर MOUNTED_FOLDER (जैसे / tmp / share) में आपके मैक हार्डड्राइव पर साझा किए गए फ़ोल्डर से फाइलें होती हैं। शेयर फ़ोल्डर में भी लिखना संभव है। वैकल्पिक रूप से, एक साझा फ़ोल्डर को स्वचालित रूप से वर्चुअल मशीन प्रारंभ पर माउंट किया जा सकता है। निम्नलिखित पंक्ति को / etc / fstab फ़ाइल में जोड़ें (रूट के रूप में, उदाहरण के लिए 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

जहां आईडी कमांड के आउटपुट में यूआईडी और जीआईडी ​​मान मिल सकते हैं (विस्तृत उदाहरण के लिए चरण 2 देखें)। वर्चुअल मशीन के पुनरारंभ के बाद साझा फ़ोल्डर भी उपलब्ध होगा।

स्रोत: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-sared-folders/


0

होस्ट OS : macOS
VM (अतिथि) OS : उबंटू सर्वर 16.04.5 LTS
VirtualBox v5.2.18
होस्ट ओएस और अतिथि OS दोनों में एक ही उपयोगकर्ता (पाठ में आगे का नाम : उपयोगकर्ता नाम ) होना चाहिए ।

स्टेज 1: वर्चुअलबॉक्स अतिथि परिवर्धन स्थापित करें :

1.1। वर्चुअलबॉक्स अतिथि परिवर्धन का पता लगाएँ,

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

1.2। VM शुरू करें

1.3। नीचे दाएं टास्क बार में CD आइकन पर क्लिक करें

1.4। "डिस्क छवि चुनें ..." का चयन करें और VBoxGuestAdditions.iso के लिए खोजें

1.5। अतिथि टर्मिनल प्रकार में (आप इसे होस्ट टर्मिनल से भी कर सकते हैं यदि आप इसमें एसएसएच करते हैं):

$ 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विंडो के शीर्ष दाईं ओर हरे बटन में क्लिक करें ।
  • उस फ़ोल्डर को खोजें और चुनें जिसे आप साझा करना चाहते हैं (उदाहरण के लिए: / पथ / से / साझा / 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। VM का /etc/rc.local बदलें:

$ 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 माउंट ऑपरेशन को निष्पादित करने के लिएजोड़ाहै। आप वह करके देख सकते हैंjournalctl -b आदेश ।

3.2। परिवर्तन लागू करने के लिए VM को रीबूट करें:

$ sudo reboot

यह भी देखें


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.