समस्या - 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 उत्पाद) जैसी चीज़ें और इसे हल करने में सक्षम हो सकती है। यह दिलचस्प होगा कि उन समाधानों का एक संग्रह प्राप्त किया जाए और विभिन्न सुविधाओं और व्यापारों की तुलना की जाए।
sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src
, जहां umaskumask
उपयोगकर्ता का मूल्य है , uid और gid से हैid <user>
,src
VBox शेयर का नाम है, और/meida/sf_src
वांछित माउंट बिंदु है।