So lassen Sie das Gastbetriebssystem Symlinks aus dem freigegebenen Ordner folgen

18

Ich habe Ubuntu Desktop als mein Hauptbetriebssystem und Ubuntu Server als mein Gastbetriebssystem in VirtualBox 4.2.16.

Ich habe einen freigegebenen Ordner mit dem Namen / shared erstellt und mehrere Symlinks zu verschiedenen Ordnern in meinem Hauptbetriebssystem eingefügt. Natürlich werden auf meinem Gastbetriebssystem nur fehlerhafte Symlinks angezeigt, da diese Speicherorte nur im Hauptbetriebssystem vorhanden sind.

Wie kann ich meinem Gastbetriebssystem den tatsächlichen Inhalt anzeigen lassen?

Das Erstellen eines weiteren freigegebenen Ordners ist keine Option.

dev9
quelle
1
Zu Ihrer Information , wenn Ihr Rechner ist windows7,8,10 dann müssen Sie die Anweisungen in der Antwort folgen und dann sudo auch die VM starten (auch bekannt als „als Administrator ausführen“) wie in dieser Blog - Post über Linux - Gast gesehen VM freigegebene Ordner mit symbolischen Links auf Windows-Host .
Trevor Boyd Smith

Antworten:

23

Es ist ein Problem in virtualBox und hat mit Sicherheit zu tun. Vor 4.1.8 funktionierte symlinks, war aber stark fehlerhaft. Und die Entscheidung wurde getroffen, um Symlink-Unterstützung zu entfernen.

Siehe diesen Kommentar :

Die symbolische Linkerstellung aus einem Gast wurde in VirtualBox 4.1.8 aus Sicherheitsgründen deaktiviert. Ein Gast könnte symbolische Links erstellen, die außerhalb des zugewiesenen Host-Verzeichnisses verweisen. Dies hat nichts mit einem ext3 / ext4-Fehler zu tun. Und der Gast kann immer noch Symlinks lesen, die auf dem Host erstellt wurden.

Entschuldigung für die späte Aussage.

Wenn Sie tun

 VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1

Dann kann Ihr Gast wieder Symlinks erstellen. Aus Sicherheitsgründen (siehe oben) ist dies jedoch standardmäßig deaktiviert. Die Korrektur, um gefährliche Symlinks vom Gast zu verhindern, ist sehr kompliziert. Daher haben wir beschlossen, keinem Gast das Erstellen von Symlinks zu gestatten, um das Sicherheitsproblem zu umgehen.

(Ich habe mir erlaubt, einen Fehler im Kommentar zu beheben;))

Rinzwind
quelle
Ich habe diesen Befehl ausgeführt und VB neu gestartet. Die Farbe des Symlinks hat sich geändert, aber jetzt kann ich nicht einmal mehr hinein cden. Ich sehe es, wenn ich ls benutze, aber bash hat aufgehört, es mir auf TAB zu zeigen.
Dev9
Hmm klingt wie es nicht ausführbar ist?
Rinzwind
Nun, ls zeigt mir lrwxrwx ---, also sollte es in Ordnung sein. Wenn ich versuche, eine CD einzuspielen, sagt mir bash, dass es keine solchen Dateien oder Verzeichnisse gibt.
Dev9
3
Was ist SHARE_NAME? Niemand erklärt es klar, wo wir es bekommen.
Meglio
3
Der Ordner, den Sie für die Freigabe verwenden.
Rinzwind,
1

Eine kurze Antwort ist, dass dies nicht möglich ist.

Das folgende Ticket auf virtualbox.org enthält einige Erläuterungen:

Diese Änderung ist beabsichtigt und behebt ein Problem mit der aktuellen Implementierung freigegebener Ordner. Aus Gründen der Kompatibilität mit Gastbetriebssystemen, die keine Ahnung haben, was ein Symlink ist, wird er derzeit auf der Hostseite interpretiert. Dies bedeutet, dass bei Gastbetriebssystemen, die wissen, was ein Symlink ist, ein unerwartetes Verhalten auftritt (z. B. wenn ein Symlink in einem freigegebenen Ordner eingebunden ist) at / foo würde auf / bar / file verweisen, es ist unmöglich, auf der Host-Seite das Richtige zu tun.

Es ist natürlich reparabel, aber alles andere als trivial, da die Trennung der Symlink-Verarbeitung zwischen der Seite des Gastbetriebssystems und der Seite des Hosts neu gestaltet werden muss. Dies kann nicht schnell erledigt werden, daher war die einzige Option die Deaktivierung der Symlink-Erstellung. Zu viele Benutzer / Anwendungen wurden von dem nicht standardmäßigen Verhalten überrascht.

Quelle

Sylvain Pineau
quelle