Что такое правильный способ использовать каталоги с Ubuntu работает в Virtual Box VM с правильными разрешениями?

23

В VirtualBox, что это лучший способ разделить каталог между хостом OS X и Ubuntu гостя?

  • Ведущий: Mac OS X 10.7.3
  • Гость: Ubuntu 12.04
  • Гость имеет общий каталог монтируется с помощью настроек VirtualBox с Access = Full и Auto-Mount = Да .

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

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
jmdeldin
источник
Ах, я понял это, но я не могу отправить ответ еще на 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. Завершение работы виртуальной машины, добавить общие папки в настройках VBOX в (Постоянная = Да, Auto-Mount = нет)
  2. Запустите ВМ
  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
jmdeldin
источник
Это именно то , что я искал! Я в конечном итоге создать общую группу пользователей для 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 не обрабатывает символические ссылки! Например, вы не можете создавать символические ссылки в общей папке с виртуальной машины! (По крайней мере, для 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 консолей здесь (макинтош и виртуальный ящик / убунту) в этом док - убедитесь , что вы понимаете , какое окно вашего в.

Последнее замечание: решение, показанное ниже, основано на установлении общего идентификатора группы между средами 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)

Создано три точки монтирования, используя Virtual Box в Настройки -> Общие папки с графическим интерфейсом.

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

Это был назначен automagicly на Virtual Box версии 4.3.16 для нас. Документация vbox показывает, как это изменить, если вы смонтируете путь вручную через командную строку, но кто помнит об этом - просто примите значения по умолчанию, которые нам навязывает графический интерфейс.

Но это не работает (ожидаемый на данный момент - это то, что мы пытаемся решить)

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

Обратите внимание, что на данный момент joe_public не является членом этой группы vboxsf - и это будет проблемой, пока мы не исправим это. К вашему сведению: это группы по умолчанию, назначенные учетной записи при ее создании.

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 - на стороне макинтош, и убедитесь , что 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 на макинтош. То же рассуждение , почему 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: ------

Перейдите в наш каталог и коснитесь файла

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

Если вы идете в / СМИ / 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

По умолчанию символические ссылки не поддерживаются в виртуальных общих папках. Смотрите объяснения ниже. В принципе, насколько я понимаю, символические ссылки представляют собой дыру в безопасности, которая была «исправлена» в Virtual Box путем отключения их поддержки в период 4.1.8 (2011 г.). Я бегу 4.3.16 здесь ...

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

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

К счастью, есть задняя дверь для его повторного включения через команду Host VBoxManage . Как всегда, пожалуйста, поймите дыры в безопасности, которые вы можете открыть. Я на машине для разработки автономных, так что это не представляется проблемой.

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

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

Примечание: Ubuntu этого имя моей виртуальной машины, и общее это общее имя каталога.

Вы можете получить имя VM следующим образом:

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

И имя общих папок, либо через графический интерфейс 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.

Упражнение осталось для студента ———————

Преимущество метода, указанного выше, заключается в том, что он может работать на автономной машине без доступа к сети. Но если подумать об этом, проблема name-verses-id должна стать общей проблемой для любых разнородных вычислительных сред.

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

pbradstr
источник
3

Для меня все, что мне нужно было сделать:

sudo adduser [username] vboxsf

Этого было достаточно для меня, чтобы получить доступ к общим папкам. В папке есть группа vboxsf, для доступа к ней нужно всего лишь назначить пользователя. Если вам нужно установить более строгий доступ или более контролируемый доступ, вам может потребоваться выполнить шаги по его монтированию вручную с правильными идентификаторами пользователей.

Для меня решение fstab не сработало и заставило машину загружаться неправильно.

Kris Avi
источник
3

После того, как вы создадите общую папку в настройках Virtualbox, Ubuntu автоматически подключит ее для вас при следующей загрузке системы (вы увидите значок на рабочем столе).

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

Но если вы не используете учетную запись root, у вас не будет разрешения на доступ к ней. Что вам нужно сделать, это добавить свою учетную запись в группу пользователей с именем 'vboxsf':

sudo usermod -G vboxsf -a $USER

Затем выйдите и войдите снова. Вы можете получить доступ к общей папке сейчас.

realhu
источник
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

theDrake
источник
Приятный момент по поводу символической ссылки.
Шон Дычко
0

Я нашел это, я тестировал, и это работало в Ubuntu и Xubuntu, только функция автоматического монтирования не работала для меня

I. Установите гостевые дополнения

Во-первых, необходимо установить гостевые дополнения VirtualBox в хост-систему:

Выберите в меню VitualBox: Устройства -> Установить гостевые дополнения ...

Он устанавливает новый ISO для хост-системы. Новый компакт-диск появится в Ubuntu (или смонтируйте его). Запустите от имени пользователя root установочный скрипт VBoxLinuxAdditions-x86.run (потому что это Mac на базе Intel) в окне терминала:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Возможно, вам будет предложено перезапустить Ubuntu.

Установка гостевых дополнений имеет много преимуществ, таких как принятие разрешения экрана (ваш размер окна соответствует разрешению системы, т.е. нет полос прокрутки), простой режим мыши (не нужно нажимать левую командную кнопку, чтобы отпустить курсор мыши) и то, что мы ищем для общих папок.

II. Создать общую папку

Цель - получить доступ к общей папке, что проще, чем использовать sshd или Samba.

Выберите в меню VitualBox: Устройства -> Общие папки ...

  • Нажмите на кнопку Добавить новую общую папку.
  • Выберите путь к папке - папку на жестком диске вашего Mac, например / Users / ondrej / Pictures.
  • Выберите имя папки - имя, которое идентифицирует эту общую папку в Ubuntu (как хост-систему), например изображения.
  • Выберите «Сделать постоянным» - если вы хотите сохранить это определение общей папки.
  • Нажмите на ОК.
  • Нажмите кнопку ОК, чтобы закрыть список общих папок.

III. Смонтировать общую папку

Смонтируйте созданную общую папку в папку с разрешениями для вашего пользователя. Давайте откроем окно терминала в Ubuntu и:

Создайте папку, в которую будет установлена ​​общая папка. (Пропустите этот шаг, если у вас уже есть папка для этого.)

mkdir DIR

например (в / тмп)

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 в качестве пользователя root:

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 Виртуальная
(гостевая) ОС : 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. Запустите ВМ

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. Создать правила в ВМ:

  • Остановить ВМ
  • Перейти к Settings > Shared Folders
  • Нажмите на Add new port forwarding ruleзеленую кнопку в правом верхнем углу окна.
  • Найдите и выберите папку, к которой вы хотите предоставить общий доступ (например, / path / to / shared / host_folder )
  • Выберите Auto-mountи Make Permanentпараметры
  • Запустите ВМ

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. Перезагрузите ВМ, чтобы применить изменения:

$ sudo reboot

Этап 3: автоматическая установка host_folderв /opt/shared_folder_dir:

3.1. Измените виртуальную машину /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для выполнения операции монтирования после запуска гостевых дополнений VirtualBox. Вы можете проверить это поjournalctl -bкоманде.

3.2. Перезагрузите ВМ, чтобы применить изменения:

$ sudo reboot

Смотрите также

Укр
источник
-1

С /ubuntu//a/171357/476506

# usermod -aG vboxsf user

Выше команда даст доступ к общей папке для «пользователя».

Уткарш Найкнавер
источник