VirtualBox – gemeinsame Ordner in Linux nutzen

VirtualBox bietet die Möglichkeit, Daten über gemeinsame Ordner zu tauschen. Mit Windows-Gästen ist dies leicht möglich, für Linux-Gäste ist es nicht ganz so offensichtlich.

Anleitung

Bevor wir loslegen, sollten bereits die Gasterweiterungen im Linux installiert sein. Falls das nicht der Fall ist, gibt es hier eine Anleitung.

Einrichtung des gemeinsamen Ordners

Im ersten Schritt richten wir den gemeinsamen Ordner ein. Dies geht über die Einstellungen der virtuellen Maschine. Wir legen den Pfad fest, geben einen Ordner-Namen ein und setzen die Einstellungen. Den Ordner-Namen merken wir uns, den benötigen wir gleich im Linux.

Automatisch verbinden wählen wir ab, dafür setzen wir den Haken bei „Permanent“ verbinden. In unserem Beispiel sieht es am Ende so aus:

Wir geben das Laufwerk d: als D_DRIVE frei.

Einbinden Linux

Damit wir in Linux darauf zugreifen können, legen wir zuerst einen Ordner an, in welchen wir das Verzeichnis mounten können.

mkdir ~/shared

Dies legt im Home-Verzeichnis des aktuellen Anwenders das Verzeichnis „shared“ an. Natürlich geht auch jeder andere Pfad im System.

Das manuelle mounten geht mit folgendem Befehl:

sudo mount -t vboxsf D_DRIVE ~/shared

Wie man sieht, geben wir hier den Ordner-Namen an, welchen wir oben vergeben haben. „vboxsf“ ist übrigens das Dateisystem, wegen dem wir die installierten Gasterweiterungen installiert haben müssen.

Das wars! Sobald der Befehl ausgeführt ist, können wir auf den Pfad in unserem Home-Verzeichnis zugreifen.

Der Nachteil dieser Option ist, dass wir das Verzeichnis nach jedem Neustart erneut mounten müssen. Wer nur ab und zu darauf zugreifen möchte, für den ist das eine Option. Eine Abkürzung wäre noch ein Shell-Script, aber schauen wir im nächsten Schritt, wie wir das Verzeichnis dauerhaft in das System einbinden können.

Gemeinsames Verzeichnis dauerhaft einbinden

In den meisten Fällen soll das Austauschverzeichnis dauerhaft in die virtuelle Maschine eingebunden werden. Dies geht auch. Dazu müssen wir die „fstab“-Konfigurationsdatei bearbeiten und den Pfad dort angeben.

Zuerst öffnen wir die Datei im „nano“ oder in einem anderen Editor der Wahl:

sudo nano /etc/fstab

Dort fügen wir folgende Zeile ein:

D_DRIVE /home/username/shared vboxsf  defaults    0   0

Hier kommt wieder der Ordner-Name ins Spiel. Zwischen den Einträgen fügt man einen Tab ein. Wir speichern mit „STRG + O“ und beenden den Editor.

Nun muss eine weitere Konfigurationsdatei bearbeitet werden:

sudo nano /etc/modules

Hier fügen wir die folgende Zeile ein:

vboxsf

Anschließend starten wir das System neu, entweder über die GUI oder über die Kommandozeile:

shutdown -r now

Nach dem Neustart ist der gemeinsame Ordner automatisch eingebunden:

Das war es auch schon, wie man sieht ist der Datenaustausch sehr leicht möglich.

Troubleshooting

Hinweis zu Schreibrechten im gemeinsamen Ordner, bei manuellem Mounten

Falls im Linux-Guest-System die Fehlermeldung erscheint, dass kein Schreiben in den gemeinsamen Ordner möglich ist, liegt das in der Regel daran, dass der Benutzer nicht Mitglied der Gruppe `vboxsf` ist. VirtualBox vergibt die Schreibrechte standardmäßig nur an diese Gruppe. Die Lösung ist einfach:

sudo usermod -aG vboxsf $USER

Nach einem erneuten An- oder Abmelden ist der Benutzer Mitglied der Gruppe und hat damit auch Schreibrechte im gemeinsamen Ordner. Ein Ändern der Rechte über `chmod` oder `chown` funktioniert hier nicht, da das „vboxsf“-Dateisystem die Rechteverwaltung selbst vorgibt.

Keine Schreibrechte im gemeinsamen Ordner bei fstab

Sollte die Variante mit fstab nicht gehen (keine Schreibrechte), dies kann daran liegen, dass im Linux-Guest der gemeinsame Ordner nur mit root-Rechten eingebunden wird. Dann erscheint beim Kopieren die Meldung „Sie haben kein Schreibrecht in den Ordner.“

Ursache: VirtualBox mountet den Ordner ohne weitere Optionen standardmäßig als root:root. Befehle wie chmod oder chown greifen hier nicht.

Lösung: Benutzerrechte korrekt setzen

  1. Benutzer zur Gruppe vboxsf hinzufügen

    sudo usermod -aG vboxsf $USER

    Danach ab- und wieder anmelden.

  2. fstab-Eintrag mit UID/GID ergänzen
    Statt nur defaults sollte der Eintrag so aussehen:

    D_DRIVE   /home/username/shared   vboxsf   uid=1000,gid=1000,dmode=775,fmode=664   0   0
    • uid=1000 → Benutzer-ID (prüfen mit id -u)
    • gid=1000 → Gruppen-ID (prüfen mit id -g)
    • dmode / fmode → setzen sinnvolle Standardrechte

Damit wird der Ordner nach jedem Neustart automatisch eingebunden und der Benutzer hat auch dauerhaft Schreibrechte.

14 Kommentare

  1. Hier wird der user „da“ fest im Pfad in der fstab verdrahtet.
    Was aber, wenn das für alle Benutzer automatisch eingebunden werden soll? Kann man die Tilde verwenden? Gibt es einen allgemeingültigen Weg, einen festen Pfad jeweils in dem Ordner „Öffentlich“ innerhalb jedes Nutzererzeichnisses bereitzustellen?

    1. Hallo,

      ja das war hier nur ein Beispiel. Ich würde den Pfad dann außerhalb des Benutzerverzeichnisses legen und mounten, damit alle Benutzer darauf Zugriff haben. Ob es mit der Tilde und Home-Verzeichnis funktioniert? Keine Ahnung, habe ich selbst nicht probiert. Am besten mal selbst ausprobieren, vielleicht klappt es ja. 🙂

      Gruß
      Andy

  2. >> Das war es auch schon, wie man sieht ist der Datenaustausch sehr leicht möglich.
    Zunächst einmal: vielen Dank – Deine Beschreibung ist äußerst hilfreich.
    Allerdings: wenn man für diesen total einfachen Brot-und-Butter-Zweck eine Anleitung wie Deine haben muss, einen Endanwender mehrfach auf die Kommandozeile jagt und gar den Rechner hoch- und runterfahren muss, ist das so ziemlich das Gegenteil von „sehr leicht“. Es ist leider genau die Art von Abschreckung, bei der man eben als Anwender schon an Tippfehlern abprallen kann und stundenlang die eigentliche Aufgabe verfehlt. In der Praxis loggen sich die Leute dann per Browser privat in einen Email-Account ein und schicken sich den eine Datei per Anhang um die Welt, damit sie auf dem Host-Rechner da ist. Das geht nämlich für viele User einfache ohne solche eigentlich völlig abwegigen Verrenkungen.
    Beziehe die Kritik bitte nicht auf Dich – es ist ja klar, dass Du das so nicht gebacken hast. Da muss in Richtung Usability aber noch Einiges getan werden, bis es wirklich leicht geht.

    1. Keine Sorge, ich beziehe die Kritik nicht auf mich. Das „einfach“ ist natürlich auch etwas ironisch gemeint, sind schon einige Schritte, welche so nicht einfach nachvollziehbar sind.

      Gruß
      Andy

  3. Lob und 1000 Dank für die tolle Anleitung, konnte damit den Ordner dauerhaft einbinden, aber leider ist von Linux-Guest-System kein Datenaustausch zum Host möglich.

    FEHLERMELDUNG: „Einfügen nicht möglich. Sie haben kein Schreibrecht in den Ordner.“
    Eigentümer (Benutzer, Gruppe = root)
    Benutzer: rwx
    Gruppe: r-x
    Sonstige: r-x

    Dies lässt sich auch über chmod oder chown nicht ändern.
    Wie bekommt der Benutzer des Guest-Systems auch dauerhaftes Schreibrecht zum gemeinsamen Ordner ? ? ?

      1. Besten Dank für die Antwort, der USER war tatsächlich nicht in der Gruppe „vboxsf“ und ich konnte ihn erfolgreich über den oben genannten Code: „sudo usermod -aG vboxsf $USER“ hinzufügen: >> id: uid= …. ,109(vboxsf) …………… <> ls-l : drwxr-xr-x 1 root root 4096 17. Aug 08:43 shared

        Eine Notlösung und nicht so optimal ist über das Terminal mit „sudo cp“ Daten zum Host zu kopieren. Mit einer Win-vm geht der Datentransfer problemlos.

        Über weitere Tipps, wie man als Nutzer in diesen Verzeichnis ein Schreibrecht bekommt wäre ich sehr erfreut.

        Gruß Rudi

        1. EDIT: Irgendwas ist beim senden oben schief gelaufen.. Hier nochmal die verrutschte bzw. fehlenden Zeilen:
          Nur hat es leider nichts an der Situation geändert, es erscheint immernoch die gleiche Fehlermeldung beim Kopiervorgang: „Einfügen nicht möglich. Sie haben kein Schreibrecht in den Ordner.“

          Die Schreibrechte liegen nur weiterhin nur bei root:
          >> ls-l : drwxr-xr-x 1 root root 4096 17. Aug 08:43 shared

          1. Hallo Andi
            Gemountet: fstab wie oben beschrieben:
            D_DRIVE /home/username/shared vboxsf defaults 0 0
            natürlich dann in angepasster Form.

            Ich vermute ich konnte mein Fehlerproblem in etwa analysieren, ob es sich wirklich so verhielt kann ich nicht 100%-ig genau sagen.

            Die VM hatte ich vor ca. 1 Jahr als absoluter Linux-Neuling, und demzufolge keine Kenntnisse mit dem Terminal, erstellt.
            Höchstwahrscheinlich habe ich damals über „sudo mkdir shared“ diesen Ordner angelegt und dann als Mountverzeichnis eingebunden.
            Bei einem neu angelegt/eingebunden Verzeichnis klappt alles tadellos.

            Wobei mir nun wiederum nicht ganz schlüssig ist, ob der VM-Nutzer unbedingt der Gruppe vboxsf hinzugefügt werden muss, da mein „Root“-share ja vor dem hinzufügen zur Gruppe vboxsf über den Befehl sudo auch funktionstüchtig war. In gewisser Weise sogar sicherer, da man nur über Passwort zum Host kopieren kann. Auf jeden Fall ist nun mit dem neu eingebundenen Verzeichnis alles in Ordnung und der Transfer zwischen Guest und Host kann über die grafischer Oberfläche als Benutzer der VM realisiert werden.

            Ich kenne nicht deine Wissbegierde und Enthusiasmus, falls du das Problem noch genauer analysieren möchtest, ob bzw. wie sich der Ordner von Root auf Nutzer umstellen lassen würde erkläre ich mich gern bereit. Mit einigen hilfreichen Tipps könnte ich es ja nochmal versuchen das Problem über Umstellen der Rechte zu lösen und dann hier berichten. Ansonsten noch ein dickes Dankeschön für die Mühe.

            Gruß Rudi

  4. EDIT:
    Zu früh gefreut: Nach dem dauerhaften Einhängen und Neustart liegen die Rechte des neuem Verzeichnisses nun auch bei Root.

    Hatte nun die VM auf einen Sicherungspunkt vor automatisch/dauerhaften Einhängen (fstab-Änderung)
    zurückgesetzt. Rechte liegen bei manuellem Mounten in das Verzeichnis beim Nutzer der VM.

    Somit kann die Fehlerquelle immerhin eingrenzen werden. Es liegt am Eintrag in der fstab:
    [Host-Ordnername] /home/username/[Guest-Ordnername] vboxsf defaults 0 0

    Setzt die Variabel „defaults“ eventuell die Berechtigung auf Root ?

    1. Du könntest das nochmal so probieren in der fstab:

      D_DRIVE /home/username/shared vboxsf uid=1000,gid=1000,dmode=775,fmode=664 0 0

      Statt dem defaults. Bei mir lief/läuft es mit dem defaults, gerade nochmal getestet.

      Gruß
      Andy

  5. Super, mit dein abgeändertem Eintrag läuft es:
    [Host-Ordnername] /home/username/[Guest-Ordnername] vboxsf uid=1000,gid=1000,dmode=775,fmode=664 0 0

    Ist eine VM mit Manjaro KDE Plasma, der „defaults“-Eintrag stellt hier die Zugriffsrechte beim Auto-mount auf root.

    Ja, danke dir vielmals.
    Gruß Rudi

Schreibe einen Kommentar zu Michael Gellner Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert