Oracle VirtualBox: Eine VM für alle User

Virtualbox Logo

Eine VirtualBox kann auch von mehreren Usern auf dem Host-System gemeinsam genutzt werden. Das vereinfacht die Administration und spart Platz.

Operating system: Ubuntu 14.xx/16.xx/18.xx
Program: Virtualbox 5.x / VirtualBox 6.1
Letztes Update des Beitrags: 20.02.2021


Ein Leser dieses Beitrags hat mich auf das Problem aufmerksam gemacht, dass bei der gemeinsamen Nutzung der VirtualBox Version 6.1 durch mehrere User die Datei <Name der VM>.vbox mit dem letzten User als Besitzer abgespeichert wird und ein nachfolgender User die virtuelle Maschine deswegen nicht mehr starten kann (siehe auch Kommentare).
Herzlichen Dank an Frank!


Das Problem mit Rechten auf der .vbox-Datei

Die VirtualBox Version 6.1 schreibt beim Beenden einer virtuellen Maschine eine Datei <Name der VM>.vbox. Die vorherige Version wird zu <Name der VM>.vbox-prev umbenannt. Da der Prozess unter dem User läuft, ist er dann auch als Besitzer der .vbox-Datei eingetragen, so dass ein neuer User mangels Rechten die VM nicht mehr starten kann. Auch das Gruppenrecht wird geändert, das bei den alten Versionen auf die Gruppe vboxusers lautete.

Eine Lösung ist der Start jeder VM über ein Script, das die Rechte der .vbox-Datei wieder auf die ursprüngliche Situation zurücksetzt. Dazu muss den Usern der VM mit -> visudo das Recht eingeräumt werden, den Befehl chown mit Root-Rechten auszuführen. Das beeinträchtigt jedoch die Systemsicherheit erheblich.

Eine weitere Möglichkeit ist das Mounten eines Netzlaufwerks (z.B. auf einer NAS), da die Dateiberechtigungen im Verzeichnis /mnt/<Name des Mountpunktes> auf den jeweiligen Benutzer gesetzt werden. Allerdings bremst hier das LAN die VM ganz ordentlich aus.

Hier muss dem User über -> visudo nur das Recht auf die Ausführung des Befehls mount gegeben werden, was weniger kritisch ist als das Recht auf chown. Gemountet wird dann mit

~$: sudo mount -t cifs -o rw,username="<Username auf der NAS>",password="<Password auf der NAS>",uid=<uid>,gid=<gid> //192.168.xxx.xxx/<Verzeichnis der NAS> /mnt/<Share auf der NAS>

Die wohl einfachste Lösung ist es, die VMs auf eine externe USB-Platte zu legen, da wie beim Mounten auch die Dateirechte der gemappten Laufwerke in /media/<user> auf den jeweiligen Benutzer gesetzt werden. Hier ist bei schnellen USB-Anschlüssen kaum ein Unterschied zur internen Festplatte festzustellen.

Bei der Installation auf der internen HDD empfiehlt sich das /opt als Verzeichnis für die virtuellen Maschinen.
Für USB-Platten ist /opt in den Code-Zeilen jeweils mit /media/<user> und bei gemounteten Netzlaufwerken mit /mnt/<Share auf der NAS>zu ersetzen
.

Mein Tipp-Geber Frank hat das Rechteproblem so gelöst, dass er eine NTFS-Partition auf einer internen HDD angelegt und diese Partition dann in ein Unterverzeichnis im home jeden Users mountet. Das ist eine wie ich finde sehr elegante Lösung, weil man keine externe USB-HDD benötigt bzw. das Problem der langen Ladezeiten über LAN umgeht.


Neuinstallation

Sowohl für die Version 5.x als auch 6.1 gilt folgendes:

Auf der internen HDD

Vor Sie sich für diese Variante entscheiden, lesen Sie bitte den Abschnitt oben über die Rechteprobleme.

Sofern noch keine VM installiert wurde, legt man im Pfad /opt ein Verzeichnis an und trägt diesen Pfad über die Preferences (Einstellungen -> Allgemein) des VirtualBox-Managers ein. Dieses Verzeichnis muss der Gruppe vboxusers zugeordnet werden, die dort Lese- und Schreibrechte besitzen müssen.

~$: sudo mkdir /opt/<Verzeichnis der VMs>
~$: sudo chgrp -R vboxusers /opt/<Verzeichnis der VMs>
~$: sudo chmod -R 770 /opt/<Verzeichnis der VMs>
Auf USB-HDD oder NAS

genügt das Anlegen des Verzeichnisses für die VMs.

~$: sudo mkdir /media/<user>/<Verzeichnis der VMs>

bzw. bei einer NAS

~$: sudo mkdir /mnt/<Mountpunkt>/<Verzeichnis der VMs>

Jetzt kann ein vorbereitetes Image oder eine neue VM installiert werden.


Virtualbox umziehen

Der einfachste Weg, eine bereits vorhandene VM allen Usern zur Verfügung zu stellen oder auf ein anderes Laufwerk umzuziehen:

  • Versionen VirtualBox <= 5.2.x
    Das Verzeichnis der Virtualbox aus dem Home-Verzeichnis des Besitzers wird nach /opt kopiert.
  • Neuere Versionen
    Mit einem Rechtsklick auf die virtuelle Maschine kann man Verschieben auswählen.

Änderungen im VirtualBox-Manager (bei Version 5.2.x)

  • In der VirtualBox wird im Manager für virtuelle Medien (Datei→ Virtual Media Manager) die VM mit Freigeben ausgehängt und dann mit Entfernen entfernt. Die Daten können im nächsten Schritt gelöscht werden und der Manager für virtuelle Medien geschlossen werden.
  • Der eben bearbeiteten VM fügt man nun über Ändern → Massenspeicher die kopierte VM-Datei wieder hinzu. Sollte kein SATA-Controller mehr vorhanden sein, muss er neu erstellt werden.
  • Für Snapshots muss bei einem manuellen Verschieben der VMs in den Einstellungen der VM unter Allgemein → Erweitert der Ordner für die Sicherungspunkte für den neuen Speicherort angepasst werden.
  • Der Vollständigkeit halber passe ich auch den voreingestellten Default-Pfad für VMs unter Datei → Allgemein an.

Gemeinsame Konfiguration oder getrennt für jeden User?

Die Doku der VirtualBox beschreibt, dass die Environment-Variable XDG_CONFIG_HOME steuert, wo die Konfiguration der Virtualbox zu finden ist. Diese Variable ist normalerweise leer und Linux sucht daher im Verzeichnis .config des jeweiligen HOME-Verzeichnisses eines Users.
Setzt man diese Variable, dann beeinflusst das leider auch andere Programme, die sich an dieser Variablen orientieren. Daher verzichte ich auf diese Schritte, beschreibe sie aber dennoch, falls das jemand so umsetzen möchte. Zur besseren Kenntlichmachung habe ich diese optionalen Abschnitte grau hinterlegt.

Den Pfad /opt muss man natürlich auch hier entsprechend dem Medium anpassen, auf dem die VMs liegen.

Im Home-Verzeichnis des ursprünglichen Benutzers bzw. Erstellers der VM befindet sich das Konfigurationsverzeichnis, das ebenfalls nach /opt/<Verzeichnis der VMs> verschoben werden muss.

~$: sudo mv ~/.config/VirtualBox /opt/<Verzeichnis der VMs>

Damit die Konfigurationsdateien der VirtualBox systemübergreifend gefunden werden können, setzt man die Environment-Variable XDG_CONFIG_HOME auf den neuen Pfad der VMs:

~$: sudo nano /etc/profile.d/VirtualBox.sh

In diese Datei schreibt man den Wert, der beim Systemstart festgelegt werden soll.

export XDG_CONFIG_HOME=/opt/<Verzeichnis der VMs>

Nach einen System-Neustart kann man prüfen, ob die Variable gesetzt wurde:

~$: echo $XDG_CONFIG_HOME

Die Dateirechte müssen dann noch angepasst jetzt werden:

~$: sudo chgrp -R vboxusers /opt/<Verzeichnis der VMs>/VirtualBox
~$: sudo chmod -R 770 /opt/<Verzeichnis der VMs>/VirtualBox

Was noch zu beachten ist

Verwendet man für die home-Verzeichnisse allerdings Verschlüsselung, so ist die VM für alle User des Systems nicht verschlüsselt, denn sie liegt nun ja außerhalb des home und man muss abwägen, ob man die Partition verschlüsseln muss.


Buy Me a Coffee at ko-fi.com

You May Also Like

7 Comments

  1. Ich habe diese Anleitung Stück für Stück, genau eingehalten, sie funktioniert nicht.
    Schon bei der Terminal-Anweisung: chgrp –c –R vboxusers /opt/VM bekomme ich die Fehlermeldung chgrp: ungültige Gruppe: »–c“
    Was Unsinn ist, denn ich bin selber in der Gruppe vboxusers.
    Eine gemeinsame Nutzung EINES Gastsystems scheint so nicht realisierbar.
    Schade, denn ich suche eine solche Lösung.

  2. Hallo Frank,
    vielen Dank erst mal für die Rückmeldung.
    Ich habe mir das eben noch mal angeschaut und festgestellt, dass das „-„-Zeichen nicht als solches dargestellt wird. Das habe ich eben im Beitrag korrigiert.
    Du hast den Befehl nur rauskopiert? Dann versuche es jetzt noch mal mit Kopieren oder ersetze die Bindestriche durch das normale Minus-Zeichen.
    Alle potenziellen Benutzer müssen in der Gruppe „vboxusers“ sein.
    Grüße! Thomas

  3. Hallo Thomas,
    vielen Dank das war tatsächlich ein Fehler, den ich so nicht geahnt hätte, ein Bindestrich sieht halt auch wie ein Minus aus… ok.

    Es besteht aber noch ein Problem.
    Der letzte USER übernimmt das Eigentum der xxx.vbox und löscht die Gruppenrechte heraus. Der letzte kann die vbox weiter nutzen, aber eben nur er.

    Schicke ich „sudo chmod -R 770 /home/vm“ wieder drüber ist wieder alles für alle vorbereitet. Dann setzt allerdings der letzte wieder alles zurück und nur er kann die vbox noch nutzen.
    Wenn wir das noch hin bekommen ist die Kuh vom Eis. 🙂

  4. Ich habe nun alles mögliche versucht, eine gemeinsame Nutzung eines zentralen Gastsystems scheint nicht möglich.
    Auch wenn ich das Verzeichnis vm/NameDerVM auf 660 setze kann nur der Besitzer das Gastsystem starten.
    Der neue USER bekommt zwar nicht ohne Start des Gastsystems angezeigt dass er das Gastsystem nicht starten kann. Das geschieht erst wenn er den Start ausführt.
    Es ist erforderlich das in dem Verz. VM/NameDerVM geschrieben werden kann.
    Das wiederum bewirkt das die Rechte der Gruppe vboxusers gelöscht und der Besitzer auf den letzten USER umgeschrieben wird.

    Ich finde dafür keine brauchbare Lösung.
    Ich werde nun für jeden einzelnen USER ein eigenes Gastsystem drauf bringen.
    Eine Platzverschwendung sondergleichen.

    1. Ich habe den Beitrag jetzt im Hinblick auf das Rechteproblem bei der Version 6.1 aktualisiert. Ich habe bei mir alle Lösungen getestet und kommt mit der externen USB-HDD am Besten hin.
      Vielen Dank für Deine Hinweise und Deine Unterstützung!
      Thomas

  5. Die endgültige Lösung will ich den Lesern nicht vorenthalten. Frank hat das System auf der internen HDD so zum Laufen gebracht, dass er eine 50GB Partition als NTFS eingerichtet hat und diese über /home/vm/win-vm gemountet hat. Dort wurde die VM hin kopiert.
    Die Nutzer müssen dann auch der Gruppe plugdev und natürlich vboxusers angehören.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.