Який правильний спосіб ділитися каталогами з Ubuntu, що працює у віртуальній віртуальній вікні з правильними дозволами?


23

У VirtualBox, який найкращий спосіб ділитися каталогом між хостом OS X та гостем Ubuntu?

  • Хост: Mac OS X 10.7.3
  • Гість: Ubuntu 12.04
  • У гостя є спільний каталог, встановлений за допомогою налаштувань VirtualBox з Access = Повний і Автомобільний монтаж = Так .

Проблема з цією установкою проілюстрована нижче. У моєму спільному каталозі я не можу взагалі змінити дозволи (не в дозволах відхилено помилку, але вони просто не набувають чинності).

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це звисла символьна посилання! Стерти це, а потім ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfвирішити проблему! Вбудовані додатки для гостей, ймовірно, не змогли його пов’язати. Я витратив далеко надто багато часу з'ясувати це!
csl

2
... тепер, здається, єдиною проблемою є те, що vboxsf не обробляє символьні посилання! Як і в, ви не можете створити посилання в загальній папці з VM! (Принаймні, на OSX, VirtualBox 4.3.10
csl

Ця процедура, безумовно, одна з небагатьох, щоб ви туди потрапили. У моєму випадку, коли я
переходжу

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 є користувачем адміністратора, а його uid встановлено на 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)

Створив три точки монтажу, використовуючи Налаштування віртуальної скриньки -> спільні папки 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 з обох боків, оскільки це біль у попці вже встановлених систем, і це не вирішує для інших користувачів. Найпростішим рішенням є скласти відповідний ідентифікатор групи - 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$

І назва спільних папок, або через gui Virtual Box, або

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.

Вправа ліворуч для студента ———————

Перевага перерахованого вище методу полягає в тому, що він може працювати на автономній машині без доступу до мережі. Але якщо ви подумаєте над цим, ця проблема з іменами-віршами-ідентифікатором має стати загальною проблемою між будь-якими неоднорідними обчислювальними середовищами.

Які ще є рішення, де є рішення цієї проблеми? - Такі речі, як Active Directory (продукт Microsoft) і подібні, можливо, зможуть вирішити це. Було б цікаво отримати колекцію цих рішень і порівняти там різні особливості та вигоди.


3

Для мене все, що мені потрібно було зробити:

sudo adduser [username] vboxsf

Цього мені було достатньо, щоб отримати доступ до спільних папок. У папці є група vboxsf, користувачеві потрібно призначити її лише для отримання доступу. Якщо вам потрібно встановити більш суворий доступ або більш керований доступ, можливо, вам доведеться пройти етапи його встановлення вручну з правильними користувачами.

Для мене рішення fstab не працювало і призвело до неправильного завантаження машини.


3

Після створення спільної папки в налаштуваннях Virtualbox Ubuntu автоматично встановить її для вас при наступному завантаженні системи (ви побачите піктограму на робочому столі).

введіть тут опис зображення

Але якщо ви не використовуєте кореневий обліковий запис, ви не матимете дозволу на доступ до нього. Що потрібно зробити, це додати свій обліковий запис користувача до групи користувачів під назвою "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

Я виявив це, я протестував, і він працював в Ubuntu та Xubuntu, просто функція automount не працювала для мене

I. Встановити додатки для гостей

По-перше, необхідно встановити додатки для гостей VirtualBox до хост-системи:

Виберіть у меню VitualBox: Пристрої -> Встановити додатки для гостей ...

Він монтує новий ISO для хост-системи. У Ubuntu (або змонтувати його) з'явиться новий компакт-диск. Запустіть як кореневий сценарій встановлення VBoxLinuxAdditions-x86.run (оскільки це Mac, заснований на Intel) у вікні терміналу:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Ймовірно, вам попросять перезапустити Ubuntu.

Встановлення додатків для гостей має багато переваг, таких як прийняття роздільної здатності екрана (розмір вікна - роздільна здатність системи, тобто відсутні смуги прокрутки), легкий режим миші (не потрібно натискати ліву командну кнопку, щоб звільнити курсор миші) і те, що ми шукаємо для спільних папок.

II. Створіть загальну папку

Мета - отримати доступ до спільної папки, що є більш простим способом, ніж використовувати sshd або Samba.

Виберіть у меню VitualBox: Пристрої -> Спільні папки ...

  • Натисніть кнопку Додати нову спільну папку.
  • Виберіть Шлях до папки - папку на вашому жорсткому диску Mac, наприклад / Користувачі / ondrej / Pictures.
  • Виберіть ім'я папки - ім'я, яке ідентифікує цю спільну папку в Ubuntu (як хост-систему), наприклад, зображення.
  • Виберіть Зробити постійним - якщо ви хочете зберегти це спільне визначення папки.
  • Натисніть кнопку ОК.
  • Клацніть OK, щоб закрити список спільних папок.

ІІІ. Змонтувати загальну папку

Змонтуйте створену загальну папку в папку з дозволами для вашого користувача. Давайте відкриємо вікно терміналу на Ubuntu та:

Створіть папку, де буде змонтована спільна папка. (Пропустіть цей крок, якщо для цього вже є папка.)

mkdir DIR

наприклад (in / tmp)

mkdir share

Отримайте користувача uid:

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 мого користувача 1000. Встановіть загальну папку 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 (як корінь, наприклад, 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 Server 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. Клацніть піктограму CD у правій нижній панелі завдань

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. Створіть правила у віртуальній машині:

  • Зупиніть ВМ
  • Йти до 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. Ви можете перевірити це заjournalctl -bкомандою.

3.2. Перезавантажте VM, щоб застосувати зміни:

$ sudo reboot

Дивись також


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.