Was ist der richtige Weg, um Verzeichnisse mit Ubuntu zu teilen, die in einer Virtual Box VM mit korrekten Berechtigungen ausgeführt werden?


23

Was ist in VirtualBox die beste Möglichkeit, ein Verzeichnis zwischen einem OS X-Host und einem Ubuntu-Gast freizugeben?

  • Host: Mac OS X 10.7.3
  • Gast: Ubuntu 12.04
  • Der Gast hat ein freigegebenes Verzeichnis über die VirtualBox-Einstellungen mit Access = Full und Auto-Mount = Yes gemountet .

Das Problem mit diesem Setup ist unten dargestellt. In meinem freigegebenen Verzeichnis kann ich die Berechtigungen überhaupt nicht ändern (kein Fehler, bei dem Berechtigungen verweigert wurden, aber sie werden einfach nicht wirksam).

Ubuntu 12.04 (Gast):

% 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

Wenn ich am Gast chmod, ändert sich nichts:

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

Wenn ich auf dem Host chmod, ändert es sich auf dem Host, aber nicht auf dem Gast:

$ 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

Ah, ich habe es herausgefunden, aber ich kann die Antwort erst nach weiteren 8 Stunden posten (nicht genug Punkte). Die Lösung besteht darin sudo mount.vboxsf -o umask=002,gid=1000,uid=1000 src /media/sf_src, dass die umask der Wert des umaskBenutzers ist, uid und gid von id <user>, srcder Name der VBox-Freigabe und /meida/sf_srcder gewünschte Einhängepunkt.
Jmdeldin

Antworten:


23

Ich habe es herausgefunden!

Reproduzieren:

  1. Fahren Sie die VM herunter, und fügen Sie in den Einstellungen von VBox freigegebene Ordner hinzu (Permanent = Ja, Auto-Mount = Nein).
  2. Starten Sie die VM
  3. Führen Sie auf einem Terminal umask && idden normalen Benutzer aus, um Folgendes zu erhalten:

    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

So hängen Sie das srcVerzeichnis als Test ein:

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

Bearbeiten /etc/fstabSie die folgenden Elemente und fügen Sie sie hinzu, um sie beim Anmelden automatisch bereitzustellen :

src /media/sf_src vboxsf umask=002,gid=1000,uid=1000

Das ist genau das, wonach ich gesucht habe! Am Ende habe ich eine freigegebene Benutzergruppe für Apache2 und meine Benutzer erstellt, die Zugriff auf den bereitgestellten Ordner haben. serverfault.com/questions/6895/…
thesmart

Vielen Dank! Beachten Sie, dass ich große Probleme hatte, bis ich herausfand, dass /sbin/mount.vboxsfes sich um einen baumelnden Symlink handelte! Löschen und dann ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsfdas Problem gelöst! Die Installation der Gastzusätze konnte es wahrscheinlich nicht symbolisieren. Ich habe viel zu viel Zeit damit verbracht, das herauszufinden!
CSL

2
... nun scheint das einzige problem zu sein, dass vboxsf keine symlinks verarbeitet! Wie in können Sie keine Symlinks im freigegebenen Ordner von der VM erstellen! (Zumindest unter OSX, VirtualBox 4.3.10
csl

Diese Prozedur ist sicherlich eine von wenigen, die Sie dorthin bringen. In meinem Fall hängt das Terminal jedoch, wenn ich in das freigegebene Verzeichnis wechsle und versuche, einen ls-Befehl
auszugeben

4

Das Problem - Berechtigungsprobleme beim Zugriff von vbox / ubuntu auf ein freigegebenes OSX-Laufwerk

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

Das Ziel ist eine einfache Möglichkeit, Verzeichnisse zwischen Mac- und Ubuntu-Umgebungen freizugeben. Leider scheinen die Beispiele, die ich bisher gesehen habe, etwas komplexer zu sein, als sie tatsächlich sein müssen, und erklären nicht wirklich, was das eigentliche Problem ist, das gelöst werden muss. Ich werde versuchen, beide Probleme hier zu behandeln.

Die Umgebung ist ein Mac mit OSX 10.9.5, auf dem Virtual Box 4.3.16 Ubuntu-14.04.1 mit installierten Guest-Erweiterungen ausführt. September 2014 Zeug.

Ich denke, dass das gesamte Problem hier ist, dass die UID der Verzeichnisse auf dem Mac und in Ubuntu übereinstimmen muss.

Um auf eine Datei zuzugreifen, muss sie entweder Eigentümer oder Mitglied der Gruppe sein, der sie gehört. Und da der Zugriff tatsächlich auf der ID-Nummer der Gruppe und nicht auf dem Gruppennamen basiert, muss auf beiden Seiten eine gemeinsame Gruppennummer erstellt werden, zu der die Benutzer gehören.

Genau das leistet die folgende Lösung. Lassen Sie sich nicht von der Länge des Geschriebenen in die Irre führen, es ist eigentlich sehr einfach. Es gibt nur sehr viele Beispiele dafür, was los ist.

Ich werde hier in diesem Dokument zwischen OSX- und VBOX- Konsolen wechseln (Mac und Virtual-Box / Ubuntu) - stellen Sie sicher, dass Sie verstehen, in welchem ​​Fenster Sie sich befinden.

Letzte Anmerkung: Die unten gezeigte Lösung basiert auf der Einrichtung einer gemeinsamen Gruppen-ID zwischen der OSX- und der Ubuntu-Umgebung, damit die Dateiberechtigungen funktionieren. Es kann andere, modernere Lösungen geben. Dieser ist wirklich einfach und verständlich und basiert auf einfachen, schmucklosen Installationen.

OSX: —————

Beachten Sie, dass dies auf einem neuen 10.9.5 Mac ohne Verbindung zu einem Unternehmensnetzwerk und nur mit aktueller Software durchgeführt wurde. Das ist so einfach wie es nur geht.

Als ich die Standardinstallation auf dem Mac durchgeführt habe, ist joe_public der Administrator und seine UID wurde auf 501 gesetzt .

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)

Beachten Sie, dass die uid ist 501 - dies ist die Standardeinstellung erste Konto - ID auf OSX - nichts Besonderes

Ich habe einige Verzeichnisse erstellt, die ich auf der Mac-Seite freigeben möchte. Beachten Sie, dass ich sie aus Sicherungsgründen nicht in mein Benutzerverzeichnis verschoben habe.

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

Einfache standardmäßige Installation von Virtual Box und Ubuntu - Auch hier ist joe_public der Standardadministrator, der bei der Installation von Ubuntu erstellt wurde.

Bitte beachten Sie noch einmal, dass der Namensraum zwischen OSX und Ubuntu völlig anders ist. Es gibt hier absolut keine Beziehung zwischen den beiden Namen.

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)

Erstellt drei Bereitstellungspunkte mit der GUI " Einstellungen -> Freigegebene Ordner" von Virtual Box .

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

ANMERKUNG: Ich musste meine Sitzung tatsächlich neu starten, damit alle diese Einhängepunkte angezeigt wurden.

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)

Beachten Sie, dass die GID für diese 999 ist - dies ist die Vboxsf- Gruppe.

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

Dies wurde von Virtual Box Version 4.3.16 für uns automatisch vergeben. In der vbox-Dokumentation wird gezeigt, wie Sie dies ändern können, wenn Sie den Pfad manuell über die Befehlszeile einhängen, aber wer wird sich daran erinnern? Übernehmen Sie einfach die Standardeinstellungen, die die GUI für uns erzwingt.

Aber es funktioniert nicht (an diesem Punkt erwartet - das ist, was wir versuchen zu lösen)

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

Beachten Sie, dass joe_public zu diesem Zeitpunkt kein Mitglied dieser vboxsf- Gruppe ist - und das wird ein Problem sein, bis wir es beheben. Zu Ihrer Information: Dies sind die Standardgruppen, die dem Konto bei seiner Erstellung zugewiesen werden.

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

Also, was haben wir zu diesem Zeitpunkt (wir haben noch nichts getan, um es zu beheben)

•   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

Wir wollen nicht das Gid des Benutzers joe_public auf beiden Seiten ändern , da dies auf bereits installierten Systemen ärgerlich ist und dies für andere Benutzer nicht löst. Die einfachste Lösung besteht darin, eine passende Gruppen-ID - vboxsf - auf der Mac-Seite zu erstellen und sicherzustellen, dass joe_public auf beiden Seiten Mitglied davon ist.

Machen Sie joe_public also immer noch auf vbox / ubuntu zu einem Mitglied der 999 vboxsf- Gruppe

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

Ich glaube, ich habe mich von meinem Konto abgemeldet und mich hier wieder angemeldet, nachdem ich dies getan habe.

OSX: —————

Jetzt müssen wir eine vboxsf- Gruppe auf dem Mac erstellen . Ich bezweifle, dass der Name hier tatsächlich einen Unterschied macht - es ist die 999- Gruppen-ID, die wichtig ist. Denken Sie daran, dass die Namensräume des Verzeichnissystems (sowie die Benutzernamen) zwischen dem Host- und dem VM-Betriebssystem unterschiedlich sind. Aber nur um das Leben gesund zu machen, nennen wir es alle vboxsf auf dem Mac. Dieselbe Überlegung, warum joe_public auf beiden Seiten einen Benutzernamen verwendet.

OSX verfügt nicht wie Linux über einen einfachen Befehl zum Hinzufügen von Gruppen. Verwenden Sie dazu den Befehl dscl in mehreren Schritten. Weitere Informationen hierzu finden Sie in der Dokumentation zu Mac OS. Beachten Sie, dass wir die Gruppe vboxsf erstellen und dieser Gruppe hier joe_public hinzufügen.

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

An diesem Punkt sollten wir also haben

•   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

Der Beweis ist, ob es funktioniert - das ist der nächste Schritt

VBOX: ——————

cd in unser verzeichnis und berühre eine datei

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

Überprüfen Sie, ob wir eine Datei erfolgreich erstellt haben.

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

Es scheint alles zu funktionieren ..

VBOX: —————— SCHLUSSPRÜFUNG

Was wir hier überprüfen, ist, dass diese ganze Sache von dem Benutzer joe_public abhängt , der ein Mitglied der vboxsf- Gruppe ist - und der einfachste Weg ist, joe_public aus der Gruppe zu entfernen

Entfernen des Benutzers joe_public aus der Gruppe vboxsf

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

Wenn wir sehen, ob wir auf unser Verzeichnis zugreifen können, können wir das nicht. Dies beweist, dass es sich um ein Gruppenberechtigungsproblem handelt

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

Fügen Sie den Benutzer wieder zu vboxsf hinzu

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

Es funktioniert wieder

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: - EIN MEHR PROBLEM - Symbolische Links in der vbox -------

Wenn Sie nach / media / sf_shared gehen , werden Sie feststellen, dass symbolische Links in freigegebenen Verzeichnissen einfach nicht funktionieren. Dies ist ein wirklich großes Problem, wenn Sie versuchen, eine vollständige Linux-Entwicklungsumgebung auf einem gemeinsam genutzten Laufwerk einzurichten.

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

Standardmäßig werden symbolische Links auf virtuellen Boxfreigaben nicht unterstützt. Unten finden Sie Erklärungen. Im Grunde genommen sind symbolische Links eine Sicherheitslücke, die in Virtual Box "behoben" wurde, indem die Unterstützung für sie im 4.1.8-Zeitrahmen (2011) deaktiviert wurde. Ich laufe 4.3.16 hier ...

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

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

Glücklicherweise gibt es eine Hintertür, die es über den VBoxManage- Befehl des Hosts wieder aktiviert . Bitte haben Sie wie immer Verständnis für die Sicherheitslücken, die Sie möglicherweise öffnen. Ich arbeite auf einem eigenständigen Entwicklungscomputer, daher scheint dies kein Problem zu sein.

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

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

Hinweis: Ubuntu ist der Name meines virtuellen Computers und shared ist der Name des freigegebenen Verzeichnisses.

Sie können den VM-Namen folgendermaßen abrufen:

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

Und der Name des freigegebenen Ordners, entweder über die Virtual Box-Benutzeroberfläche oder

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

Ich habe hier das gesamte virtuelle Box-System neu gestartet und nicht herausgefunden, welche Mindestanforderungen es erfüllen muss.

Um dies zu testen, kehren Sie zu Ihrem vbox-Fenster zurück

VBOX: ---------

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

Kein Fehler - und zu überprüfen

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

Und zurück auf der Mac-Seite - nur um zu beweisen, dass alles funktioniert

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

Bitte beachten Sie, dass ich dies nur auf einem OSX-Host und einem Ubuntu Virtual Box-Client getestet habe. Die oben aufgeführten Verweise scheinen darauf hinzudeuten, dass möglicherweise ein Problem beim Ausführen eines Windows-basierten Hosts vorliegt.

ÜBUNG LINKS FÜR DEN STUDENTEN ——————

Der Vorteil der oben aufgeführten Methode besteht darin, dass sie auf einem eigenständigen Computer ohne Netzwerkzugriff ausgeführt werden kann. Aber wenn Sie darüber nachdenken, muss dieses Problem mit der Namensangabe ein häufiges Problem für heterogene Computerumgebungen sein.

Welche anderen Lösungen sind verfügbar, wenn Lösungen für dieses Problem verfügbar sind? - Möglicherweise können Dinge wie Active Directory (ein Microsoft-Produkt) und dergleichen Abhilfe schaffen. Es wäre interessant, eine Sammlung dieser Lösungen zu erhalten und dort verschiedene Merkmale und Kompromisse zu vergleichen.


3

Für mich war alles was ich tun musste:

sudo adduser [username] vboxsf

Das war genug für mich, um auf die freigegebenen Ordner zuzugreifen. Der Ordner verfügt über eine Gruppe von vboxsf. Der Benutzer muss nur dieser Gruppe zugewiesen werden, um Zugriff zu erhalten. Wenn Sie einen strengeren oder besser kontrollierbaren Zugriff festlegen müssen, müssen Sie möglicherweise die Schritte zum manuellen Mounten mit den richtigen Benutzer-IDs ausführen.

Bei mir hat die fstab-Lösung nicht funktioniert und den Rechner nicht richtig gebootet.


3

Nachdem Sie einen freigegebenen Ordner in den Virtualbox-Einstellungen erstellt haben, wird er von Ubuntu beim nächsten Systemstart automatisch bereitgestellt (auf Ihrem Desktop wird ein Symbol angezeigt).

Bildbeschreibung hier eingeben

Wenn Sie jedoch kein Root-Konto verwenden, haben Sie keine Berechtigung, darauf zuzugreifen. Sie müssen Ihr Benutzerkonto zu einer Benutzergruppe mit dem Namen "vboxsf" hinzufügen:

sudo usermod -G vboxsf -a $USER

Dann abmelden und erneut anmelden. Sie können jetzt auf den freigegebenen Ordner zugreifen.


3

Seit VirtualBox v4.0 ist es einfach, diese Berechtigungsprobleme zu lösen! Sie haben keine Sorgen zu machen brauchen mkdir, mount, chmod, umasketc. , auf die automatische montierten freigegebene Ordner (die in erscheinen Zugriff /mediamit sf_standardmäßig Präfixe), gibt es nur eine Sache , die Sie tun müssen: Fügen Sie Ihren Benutzernamen an die vboxsfGruppe über sudo usermod -a -G vboxsf [username].

Zur Vereinfachung möchten Sie möglicherweise auch symbolische Links zu diesen freigegebenen Ordnern in Ihrem homeOrdner erstellen (z ln -s /media/sf_Stuff ~/Stuff. B. ).

Quelle: http://www.virtualbox.org/manual/ch04.html#sf_mount_auto


Netter Punkt über den symbolischen Link.
Shaun Dychko

0

Ich habe dies gefunden, getestet und es hat in Ubuntu und Xubuntu funktioniert, nur die automount-Funktion hat bei mir nicht funktioniert

I. Installieren Sie Guest Additions

Zunächst müssen die Guest Additions der VirtualBox auf dem Host-System installiert werden:

Wählen Sie im Menü der VitualBox: Geräte -> Gastzugaben installieren…

Es wird eine neue ISO für das Hostsystem bereitgestellt. Eine neue CD erscheint in Ubuntu (oder mounten Sie sie). Führen Sie als Root das Installationsskript VBoxLinuxAdditions-x86.run (da es sich um einen Intel-basierten Mac handelt) in einem Terminalfenster aus:

cd /media/cdrom
sudo VBoxLinuxAdditions-x86.run

Wahrscheinlich werden Sie aufgefordert, Ubuntu neu zu starten.

Das Installieren der Guest Additions hat viele Vorteile, wie die Übernahme der Bildschirmauflösung (Ihre Fenstergröße ist die Systemauflösung, dh keine Bildlaufleisten), den einfachen Mausmodus (Sie müssen nicht die linke Befehlstaste drücken, um den Mauszeiger loszulassen) und das, wonach wir suchen für freigegebene Ordner.

II. Freigegebenen Ordner erstellen

Das Ziel ist es, auf einen freigegebenen Ordner zuzugreifen. Dies ist eine einfachere Möglichkeit, als sshd oder Samba zu verwenden.

Wählen Sie im Menü der VitualBox: Geräte -> Freigegebene Ordner ...

  • Klicken Sie auf die Schaltfläche Neuen freigegebenen Ordner hinzufügen.
  • Wählen Sie einen Ordnerpfad - einen Ordner auf Ihrer Mac-Festplatte, z. B. / Users / ondrej / Pictures.
  • Wählen Sie einen Ordnernamen - einen Namen, der diesen freigegebenen Ordner in Ubuntu (als Host-System) kennzeichnet, z. B. Bilder.
  • Wählen Sie Make Permanent (Permanent machen) aus, wenn Sie diese Definition des freigegebenen Ordners beibehalten möchten.
  • Klicken Sie auf OK.
  • Klicken Sie auf OK, um die Liste der freigegebenen Ordner zu schließen.

III. Mount Shared Folder

Hängen Sie den erstellten freigegebenen Ordner in einen Ordner mit Berechtigungen für Ihren Benutzer ein. Lassen Sie uns ein Terminal-Fenster unter Ubuntu öffnen und:

Erstellen Sie einen Ordner, in dem der freigegebene Ordner bereitgestellt wird. (Überspringen Sie diesen Schritt, wenn Sie bereits einen Ordner dafür haben.)

mkdir DIR

zB (in / tmp)

mkdir share

Holen Sie sich Ihre Benutzer-ID:

id

Das Ergebnis wird ungefähr so ​​aussehen:

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

Die UID meines Benutzers ist also 1000. Hängen Sie den freigegebenen Ordner SHARED_FOLDER_NAME in den Ordner MOUNTED_FOLDER ein, dessen Eigentümer der Benutzer mit der UID USER_ID als Root ist:

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

z.B

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

Wenn Sie den Parameter uid angeben, können Sie in den freigegebenen Ordner für Ihren Benutzer schreiben. Der bereitgestellte Ordner MOUNTED_FOLDER (z. B. / tmp / share) enthält Dateien aus dem freigegebenen Ordner auf Ihrer Mac-Festplatte. Es ist auch möglich, in den Freigabeordner zu schreiben. Optional kann ein freigegebener Ordner beim Start der virtuellen Maschine automatisch bereitgestellt werden. Fügen Sie der Datei / etc / fstab die folgende Zeile hinzu (als root, zB sudo vim / etc / fstab):

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

z.B

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

Wobei sich die Werte für uid und gid in der Ausgabe des Befehls id befinden (siehe Schritt 2 für ein detailliertes Beispiel). Der freigegebene Ordner ist auch nach einem Neustart der virtuellen Maschine verfügbar.

Quelle: http://www.valibuk.net/2009/03/accessing-mac-os-x-harddrive-from-ubuntu-in-virtualbox-via-shared-folders/


0

Host-Betriebssystem : macOS
VM (Gast) Betriebssystem : Ubuntu Server 16.04.5 LTS
VirtualBox v5.2.18
Sowohl das Host-Betriebssystem als auch das Gast-Betriebssystem müssen denselben Benutzer haben (weiter unten im Text: Benutzername ).

Stufe 1: Installieren der VirtualBox-Gastzusätze :

1.1. Suchen Sie die VirtualBox-Gastzusätze.

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

1.2. Starten Sie die VM

1.3. Klicken Sie auf das CD-Symbol in der unteren rechten Taskleiste

1.4. Wählen Sie "Choose disk image ..." und suchen Sie nach VBoxGuestAdditions.iso

1.5. Im Gast-Terminal-Typ (Sie können dies auch vom Host-Terminal aus tun, wenn Sie SSH verwenden):

$ 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

Stufe 2: Setup für freigegebene Ordner:

2.1. Erstellen Sie Regeln in VM:

  • Stoppen Sie die VM
  • Gehe zu Settings > Shared Folders
  • Klicken Sie Add new port forwarding ruleoben rechts im Fenster auf die grüne Schaltfläche.
  • Suchen Sie den Ordner, den Sie freigeben möchten, und wählen Sie ihn aus (z. B.: / path / to / shared / host_folder ).
  • Wählen Sie die Optionen Auto-mountundMake Permanent
  • Starten Sie die VM

2.2. Um einen freigegebenen Ordner bereitzustellen, /optmüssen Sie einen shared_folder_dirUnterordner erstellen und die entsprechenden Berechtigungen dafür festlegen:

$ 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. Fügen Sie der vboxsf- Gruppe einen Benutzernamen hinzu :

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

2.4. Starten Sie die VM neu, um die Änderungen zu übernehmen:

$ sudo reboot

Stufe 3: Automatische Montage host_folderin /opt/shared_folder_dir:

3.1. Ändern Sie VMs /etc/rc.local:

$ sudo nano /etc/rc.local

und platziere folgendes rechts oben 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 >>>

Hinweis: Ich habe hinzugefügtsleep 5, dass der Mount-Vorgang ausgeführt werden soll, nachdem VirtualBox Guest Additions gestartet wurde. Sie können dies perjournalctl -bBefehlüberprüfen.

3.2. Starten Sie die VM neu, um die Änderungen zu übernehmen:

$ sudo reboot

Siehe auch


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.