Jaki jest prawidłowy sposób udostępniania katalogów Ubuntu w maszynie wirtualnej Virtual Box z prawidłowymi uprawnieniami?

23

W VirtualBox jaki jest najlepszy sposób udostępniania katalogu między hostem OS X a gościem Ubuntu?

  • Host: Mac OS X 10.7.3
  • Gość: Ubuntu 12.04
  • Gość ma wspólny katalog zamontowany za pomocą ustawień VirtualBox z Access = Full i Auto-Mount = Yes .

Problem z tą konfiguracją pokazano poniżej. W moim udostępnionym katalogu nie mogę w ogóle zmienić uprawnień (nie jest to błąd odmowy uprawnień, ale po prostu nie działają).

Ubuntu 12.04 (gość):

% 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 (host):

$ 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

Jeśli przejdę do gościa, nic się nie zmieni:

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

Jeśli chmod na hoście, zmienia się na hoście, ale nie na gościu:

$ 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
źródło
Ach, wymyśliłem to, ale nie mogę opublikować odpowiedzi przez kolejne 8 godzin (za mało punktów). Rozwiązaniem jest zrobienie tego sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, gdzie umask jest wartością umaskużytkownika, od której są identyfikatory UID i GID id <user>, srcjest nazwą udziału VBox i /meida/sf_srcpożądanym punktem montowania.
jmdeldin

Odpowiedzi:

23

Zrozumiałem!

Powielać:

  1. Zamknij maszynę wirtualną, dodaj foldery współdzielone w ustawieniach VBox (Permanent = Tak, Auto-Mount = Nie)
  2. Uruchom maszynę wirtualną
  3. Z terminala uruchom umask && idjako zwykły użytkownik, aby uzyskać coś takiego:

    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

Aby zamontować srckatalog jako test:

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

Aby automatycznie zamontować go podczas logowania, edytuj /etc/fstabi dodaj:

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000
jmdeldin
źródło
Właśnie tego szukałem! Skończyło się tworzenie udostępnionej grupy użytkowników dla apache2 i moich użytkowników, którzy mają dostęp do zamontowanego folderu. serverfault.com/questions/6895/…
thesmart
Dzięki! Zauważ, że miałem duże problemy, dopóki nie odkryłem, że /sbin/mount.vboxsfto wiszące dowiązanie symboliczne! Usunięcie go, a następnie ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfrozwiązanie problemu! Instalacja dodatków gości prawdopodobnie nie była w stanie jej dowiązać symbolicznie. Spędziłem zdecydowanie za dużo czasu, zastanawiając się nad tym!
csl
2
... teraz jedynym problemem jest to, że vboxsf nie obsługuje dowiązań symbolicznych! W tej chwili nie można tworzyć dowiązań symbolicznych w folderze współdzielonym z maszyny wirtualnej! (Przynajmniej w OSX, VirtualBox 4.3.10
csl
Ta procedura z pewnością jest jedną z niewielu, które Cię tam doprowadzą. Jednak w moim przypadku, gdy
przechodzę
4

Problem - problemy z uprawnieniami w vbox / ubuntu uzyskujące dostęp do współdzielonego dysku OSX

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

Celem jest prosty sposób udostępniania katalogów między środowiskami Mac i Ubuntu. Niestety przykłady, które do tej pory widziałem, wydają się nieco bardziej skomplikowane niż powinny być i nie wyjaśniają, jaki prawdziwy problem należy rozwiązać. Spróbuję rozwiązać oba te problemy tutaj.

Środowisko tutaj to Mac z systemem OSX 10.9.5, z Virtual Box 4.3.16 wykonującym Ubuntu-14.04.1 z zainstalowanymi rozszerzeniami Guest. Rzeczy z września 2014 r.

Myślę, że cały problem polega na tym, że identyfikator użytkownika katalogów na komputerze Mac i w Ubuntu musi się zgadzać - Domyślny identyfikator użytkownika przypisany do użytkownika i grup różni się w OSX i Ubuntu, i na tym właśnie polega problem.

Aby uzyskać dostęp do pliku, należy go posiadać lub być członkiem grupy, która go posiada. A ponieważ dostęp jest w rzeczywistości oparty na numerze identyfikacyjnym grupy, a nie na nazwie grupy, wystarczy stworzyć wspólny numer grupy po obu stronach, do którego należą użytkownicy.

Właśnie to robi poniższe rozwiązanie. Nie daj się zwieść długości napisanych treści, w rzeczywistości jest to bardzo proste. Jest tylko wiele przykładów tego, co się dzieje.

Będę przerzucać między konsolami OSX i VBOX tutaj (mac i virtual-box / ubuntu) w tym dokumencie - upewnij się, że rozumiesz, w którym oknie jesteś.

Uwaga końcowa: Rozwiązanie pokazane poniżej opiera się na ustanowieniu wspólnego identyfikatora grupy między środowiskami OSX i Ubuntu, tak aby uprawnienia do plików działały. Mogą istnieć inne, bardziej nowoczesne rozwiązania. Ten jest naprawdę prosty i zrozumiały i działa na prostych, pozbawionych ozdób instalacjach.

OSX: —————

Zwróć uwagę, że zostało to zrobione na nowym komputerze Mac 10.9.5, bez niczego, nie podłączonego do sieci korporacyjnej, nic nadzwyczajnego na nim uruchomionego oprócz oprogramowania podstawowego. To jest tak proste, jak to możliwe.

Kiedy zrobiłem domyślną instalację na komputerze Mac, joe_public jest użytkownikiem administracyjnym, a jego identyfikator użytkownika został ustawiony na 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)

Zauważ, że uid to 501 - jest to domyślny pierwszy identyfikator konta w OSX - nic specjalnego

Utworzyłem kilka katalogów, które chcę udostępnić po stronie Maca - pamiętaj, że nie umieściłem ich w katalogu użytkowników ze względu na kopię zapasową.

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

Prosta domyślna instalacja wirtualnego boxa i Ubuntu - ponownie joe_public jest domyślnym administratorem utworzonym podczas instalacji Ubuntu.

Jeszcze raz zauważ, że przestrzeń nazw między OSX a Ubuntu jest zupełnie inna. Nie ma absolutnie żadnego związku między tymi dwoma nazwami.

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)

Utworzono trzy punkty montowania, używając ustawienia Virtual Box -> GUI folderów współdzielonych.

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

UWAGA: Musiałem zrestartować moją sesję, aby pojawiły się wszystkie punkty montowania.

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)

Zauważ, że gid dla nich to 999 - jest to grupa vboxsf .

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

Zostało to przypisane nam automatycznie przez Virtual Box w wersji 4.3.16. Dokumentacja vbox pokazuje, jak to zmienić, jeśli ręcznie zamontujesz ścieżkę za pomocą wiersza poleceń, ale kto to zapamięta - po prostu weź domyślne ustawienia, które narzuca nam GUI.

Ale to nie działa (oczekiwane w tym momencie - właśnie to próbujemy rozwiązać)

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

Zauważ, że w tym momencie joe_public nie jest członkiem tej grupy vboxsf - i będzie to stanowić problem, dopóki go nie naprawimy . FYI: Są to domyślne grupy przypisane do konta podczas jego tworzenia.

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

Więc co mamy w tym momencie (nie zrobiliśmy jeszcze nic, aby to naprawić)

•   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

Nie chcemy zmieniać identyfikatora użytkownika joe_public po obu stronach, ponieważ jest to uciążliwe dla już zainstalowanych systemów i nie rozwiązuje tego dla innych użytkowników. Najprostszym rozwiązaniem jest utworzenie pasującej grupy id - vboxsf - po stronie mac i upewnienie się, że joe_public jest jej członkiem po obu stronach.

Tak, nadal na vbox / Ubuntu, upewnij joe_public członkowi 999 vboxsf grupie

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

Wydaje mi się, że wylogowałem się z konta i wróciłem tutaj po tym, jak to zrobiłem.

OSX: —————

Teraz musimy utworzyć grupę vboxsf na komputerze Mac. Wątpię, czy nazwa faktycznie robi różnicę - ważny jest identyfikator grupy 999 . Pamiętaj, że przestrzenie nazw systemu katalogów (a także nazwy użytkowników) różnią się między systemem operacyjnym hosta a maszyną wirtualną. Ale żeby uczynić życie rozsądnym, wszyscy nazywamy to vboxsf na Macu . To samo powód, dla którego joe_public jest używana po obu stronach z nazwą użytkownika.

OSX nie ma prostej komendy dodawania grupy, podobnie jak linux - więc użyj komendy dscl, aby zrobić to w kilku krokach. Więcej informacji na ten temat znajduje się w dokumentacji systemu Mac OS. Zauważ, że tworzymy grupę vboxsf i dodajemy tutaj 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

W tym momencie powinniśmy mieć

•   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

Dowodem na to jest, czy to działa - więc to kolejny krok

VBOX: ——————

cd do naszego katalogu i dotknij pliku

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

Sprawdź, czy plik został pomyślnie utworzony.

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

Wszystko wydaje się działać.

VBOX: —————— WERYFIKACJA KOŃCOWA

Sprawdzamy tutaj, że to wszystko zależy od tego, czy użytkownik joe_public jest członkiem grupy vboxsf - a najprostszym sposobem jest po prostu usunięcie joe_public z grupy

Usuwanie użytkownika joe_public z grupy vboxsf

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

Sprawdzanie, czy możemy uzyskać do niego dostęp do naszego katalogu - i nie możemy, a to dowodzi, że jest to problem z uprawnieniami grupowymi

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

Dodaj użytkownika z powrotem do vboxsf

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

Działa znowu!

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: - JEDEN WIĘCEJ PROBLEMU - dowiązania symboliczne w vbox -------

Jeśli przejdziesz do / media / sf_shared , przekonasz się, że dowiązania symboliczne w udostępnionych katalogach po prostu nie działają. Jest to naprawdę duży problem, jeśli próbujesz skonfigurować pełne środowisko programistyczne dla systemu Linux na dysku współdzielonym.

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

Domyślnie dowiązania symboliczne nie są obsługiwane w udziałach wirtualnych pudełek. Poniżej wyjaśnienia. Zasadniczo, jak rozumiem, dowiązania symboliczne są luką w zabezpieczeniach, które zostały „naprawione” w Virtual Boxie poprzez wyłączenie ich obsługi w przedziale czasowym 4.1.8 (2011). Korzystam z 4.3.16 tutaj ...

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

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

Na szczęście istnieją tylne drzwi, aby je ponownie włączyć za pomocą komendy VBoxManage hosta . Jak zawsze, proszę zrozumieć luki w zabezpieczeniach, które możesz otwierać. Jestem na autonomicznej maszynie programistycznej, więc nie wydaje się to być problemem.

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

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

Uwaga: Ubuntu to nazwa mojego vm, a shared to nazwa udostępnionego katalogu.

Możesz uzyskać nazwę VM tak:

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

I nazwa folderów współdzielonych, albo poprzez GUI Virtual Box, albo

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

Ponownie uruchomiłem tutaj cały system wirtualnej skrzynki, nie ustaliłem minimalnych wymagań, które należy spełnić.

W każdym razie, aby to przetestować, wróć do okna vbox

VBOX: ---------

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

Bez błędów - i do weryfikacji

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

Z powrotem po stronie Mac - tylko po to, aby udowodnić, że wszystko działa

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

Uwaga: testowałem to tylko na hoście OSX i kliencie wirtualnym Ubuntu. Odniesienia wymienione powyżej wydają się wskazywać, że może występować problem z uruchomieniem hosta opartego na systemie Windows.

ĆWICZENIE LEWE DLA STUDENTA ———————

Zaletą powyższej metody jest to, że może ona działać na maszynie autonomicznej, bez dostępu do sieci. Ale jeśli się nad tym zastanowić, to kwestia nazwa-werset-id musi być częstym problemem wśród heterogenicznych środowisk komputerowych.

Jakie inne rozwiązania są dostępne tam, gdzie dostępne są rozwiązania tego problemu? - Rzeczy takie jak Active Directory (produkt Microsoft) i tym podobne mogą rozwiązać ten problem. Byłoby interesujące uzyskać zbiór tych rozwiązań i porównać tam różne funkcje i kompromisy.

pbradstr
źródło
3

Dla mnie wszystko, co musiałem zrobić, to:

sudo adduser [username] vboxsf

To wystarczyło mi, aby uzyskać dostęp do udostępnionych folderów. Folder ma grupę vboxsf, użytkownik musi być przypisany do tej grupy, aby uzyskać dostęp. Jeśli chcesz ustawić bardziej ścisły dostęp lub bardziej kontrolowany dostęp, być może będziesz musiał przejść przez etapy ręcznego instalowania go za pomocą odpowiednich identyfikatorów użytkownika.

Dla mnie rozwiązanie fstab nie zadziałało i spowodowało nieprawidłowe uruchomienie komputera.

Kris Avi
źródło
3

Po utworzeniu folderu współdzielonego w ustawieniach Virtualbox, Ubuntu automatycznie zainstaluje go dla ciebie przy następnym uruchomieniu systemu (zobaczysz ikonę na pulpicie).

wprowadź opis zdjęcia tutaj

Ale jeśli nie korzystasz z konta root, nie będziesz mieć dostępu do niego. Musisz dodać swoje konto użytkownika do grupy użytkowników o nazwie „vboxsf”:

sudo usermod -G vboxsf -a $USER

Następnie wyloguj się i zaloguj ponownie. Możesz teraz uzyskać dostęp do udostępnionego folderu.

realhu
źródło
3

Od czasu VirtualBox v4.0 łatwo jest rozwiązać te problemy z uprawnieniami! Nie trzeba się martwić mkdir, mount, chmod, umask, itd. Aby uzyskać dostęp do automatycznego zamontowany foldery współdzielone (które pojawiają się /mediaz sf_prefiksów domyślnie), jest tylko jedna rzecz, którą trzeba zrobić: Dodaj swoją nazwę użytkownika do vboxsfgrupy poprzez sudo usermod -a -G vboxsf [username].

Dla wygody możesz także utworzyć dowiązania symboliczne do folderów współdzielonych w homefolderze (np ln -s /media/sf_Stuff ~/Stuff.).

Źródło: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto

theDrake
źródło
Fajna uwaga na temat dowiązania symbolicznego.
Shaun Dychko
0

Znalazłem to, przetestowałem i działało w Ubuntu i Xubuntu, tylko funkcja automount nie działała dla mnie

I. Zainstaluj dodatki dla gości

Po pierwsze, konieczne jest zainstalowanie dodatków gości VirtualBox w systemie hosta:

Wybierz z menu VitualBox: Urządzenia -> Zainstaluj dodatki dla gości…

Montuje nowy ISO dla systemu hosta. Nowa płyta CD pojawi się w Ubuntu (lub zamontuj ją). Uruchom jako root skrypt instalacyjny VBoxLinuxAdditions-x86.run (ponieważ jest to komputer Mac z procesorem Intel) w oknie terminalu:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Prawdopodobnie zostaniesz poproszony o ponowne uruchomienie Ubuntu.

Instalacja dodatków dla gości ma wiele zalet, takich jak przyjęcie rozdzielczości ekranu (rozmiar okna to rozdzielczość systemowa, tj. Brak pasków przewijania), łatwy tryb myszy (nie trzeba naciskać lewego przycisku polecenia, aby zwolnić kursor myszy) i, czego szukamy dla udostępnionych folderów.

II. Utwórz folder współdzielony

Celem jest uzyskanie dostępu do folderu współdzielonego, co jest łatwiejszym sposobem niż użycie sshd lub Samba.

Wybierz z menu VitualBox: Urządzenia -> Foldery współdzielone ...

  • Kliknij przycisk Dodaj nowy folder współdzielony.
  • Wybierz ścieżkę folderu - folder na dysku twardym komputera Mac, np. / Users / ondrej / Pictures.
  • Wybierz nazwę folderu - nazwę, która identyfikuje ten folder współdzielony w Ubuntu (jako system hosta), np. Zdjęcia.
  • Wybierz Ustaw na stałe - jeśli chcesz zachować tę definicję folderu współdzielonego.
  • Kliknij OK.
  • Kliknij przycisk OK, aby zamknąć listę folderów udostępnionych.

III. Zamontuj folder współdzielony

Zamontuj utworzony folder współdzielony w folderze z uprawnieniami dla użytkownika. Otwórzmy okno terminalu na Ubuntu i:

Utwórz folder, w którym zostanie zamontowany folder współdzielony. (Pomiń ten krok, jeśli masz już folder do tego.)

mkdir DIR

np. (w / tmp)

mkdir share

Uzyskaj identyfikator użytkownika:

id

Wynik będzie taki jak:

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

więc identyfikator użytkownika mojego użytkownika wynosi 1000. Zamontuj folder współdzielony SHARED_FOLDER_NAME w folderze MOUNTED_FOLDER z prawem własności dla użytkownika o identyfikatorze użytkownika UER_ID jako root:

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

na przykład

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

Określenie parametru uid umożliwia zapisywanie w folderze udostępnionym dla użytkownika. Zamontowany folder MOUNTED_FOLDER (np. / Tmp / share) zawiera pliki z folderu współdzielonego na dysku twardym komputera Mac. Możliwe jest również zapisywanie w folderze udostępniania. Opcjonalnie folder współdzielony można automatycznie zamontować na starcie maszyny wirtualnej. Dodaj następujący wiersz do pliku / etc / fstab (jako root, np. Sudo vim / etc / fstab):

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

na przykład

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

gdzie wartości uid i gid można znaleźć w danych wyjściowych komendy id (zobacz szczegółowy krok w kroku 2). Folder współdzielony będzie dostępny również po ponownym uruchomieniu maszyny wirtualnej.

Źródło: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-shared-folders/

Jezus
źródło
0

System operacyjny : MacOS
VM (gość) System operacyjny : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Zarówno system operacyjny hosta, jak i system operacyjny gościa muszą mieć tego samego użytkownika (dalej w tekście: nazwa użytkownika ).

Etap 1: Zainstaluj dodatki dla gości VirtualBox :

1.1 Znajdź dodatki dla gości VirtualBox,

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

1.2 Uruchom maszynę wirtualną

1.3 Kliknij ikonę CD w prawym dolnym pasku zadań

1.4 Wybierz „Wybierz obraz dysku ...” ”i wyszukaj VBoxGuestAdditions.iso

1.5 W typie terminalu gościa (możesz to zrobić również z terminala hosta, jeśli używasz 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

Etap 2: Konfiguracja folderów współdzielonych:

2.1 Utwórz reguły w maszynie wirtualnej:

  • Zatrzymaj maszynę wirtualną
  • Iść do Settings > Shared Folders
  • Kliknij Add new port forwarding rulezielony przycisk w prawym górnym rogu okna.
  • Wyszukaj i wybierz folder, który chcesz udostępnić (np .: / path / to / shared / host_folder )
  • Wybierz opcje Auto-mountiMake Permanent
  • Uruchom maszynę wirtualną

2.2 Aby zamontować folder współdzielony /opt, musisz utworzyć shared_folder_dirpodfolder i ustawić dla niego odpowiednie uprawnienia:

$ 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 Dodaj nazwę użytkownika do grupy vboxsf :

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

2.4 Uruchom ponownie maszynę wirtualną, aby zastosować zmiany:

$ sudo reboot

Etap 3: Automatyczny montaż host_folderw /opt/shared_folder_dir:

3.1 Zmień plik VM /etc/rc.local:

$ sudo nano /etc/rc.local

i umieść następujące powyżej 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 >>>

Uwaga: Dodałem,sleep 5aby wykonać operację montowania po rozpoczęciu dodawania gości VirtualBox. Możesz to sprawdzić za pomocąjournalctl -bpolecenia.

3.2 Uruchom ponownie maszynę wirtualną, aby zastosować zmiany:

$ sudo reboot

Zobacz też

Ukr
źródło
-1

Od /ubuntu//a/171357/476506

# usermod -aG vboxsf user

Powyższe polecenie daje dostęp do folderu współdzielonego dla „użytkownika”.

Utkarsh Naiknaware
źródło