Wie kann ich ein Linux ext3-Image auf einem Mac in einer Linux-VM unter VMWare mounten?

2

Ich habe ein Linux ext3-Image, das ich auf meinen Mac heruntergeladen habe (mit macOS Sierra 10.12.3). Ich habe auch eine Linux-VM (Ubuntu 16.04), die unter VMWare (Fusion Version 8.5.3) auf dem Mac ausgeführt wird. Ich möchte dieses Disk-Image in die Linux-VM einbinden.

Ich habe den Ordner auf dem Mac, der das Festplatten-Image enthält, für die VM freigegeben und kann ihn mithilfe des folgenden Befehls einbinden:

$ vmhgfs-fuse ".host:/$(vmware-hgfsclient)" ~/Shared

Wenn ich jedoch versuche, ein Disk-Image in dieses Verzeichnis einzubinden, erhalte ich die Fehlermeldung, dass mir die Berechtigung verweigert wurde:

$ sudo mount -t ext3 -o loop ~/Shared/linux-ext3.img /mnt
mount: /home/dave/Shared/linux-ext3.img: failed to setup loop device: Permission denied

Dasselbe passiert, auch wenn ich versuche, es schreibgeschützt zu mounten:

$ sudo mount -t ext3 -o loop,ro ~/Shared/linux-ext3.img /mnt
mount: /home/dave/Shared/linux-ext3.img: failed to setup loop device: Permission denied

Das freigegebene Verzeichnis ist mit Lese- / Schreibzugriff bereitgestellt:

vmhgfs-fuse on /home/dave/Shared type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)

Und die Disk-Image-Datei ist für alle lesbar und beschreibbar:

$ cd ~/Shared/
$ ls -lh linux-ext3.img 
-rw-rw-rw- 1 501 dialout 25G Feb  2 21:01 linux-ext3.img

Deshalb verstehe ich nicht, warum ich diesen Fehler erhalte.

Dave Dribin
quelle
Es gibt einige knifflige Interaktionen mit allow_root/ allow_otherin FUSE und dem eigentlichen Root (und ich werde auch immer von ihnen verwirrt). Versuchenchmod o+rw linux-ext3.img
dirkt
@dirkt: Guter Anruf. Ich habe das versucht, ohne Erfolg. Erhielt den gleichen Fehler "Berechtigung verweigert".
Dave Dribin
Nicht vertraut mit vmhgfs-fuse: Wenn dies nicht unterstützt wird chmod, versuchen Sie alles, was das Image für root lesbar macht:, sudo vmhgfs-fuse ...oder machen Sie rootein Mitglied von dialoutusw. Oder versuchen Sie umgekehrt, das Image schreibgeschützt bereitzustellen.
Dirkt
@dirkt: Ah! Vielen Dank für den Tipp zu "Versuchen Sie alles, was das Image für Root lesbar macht". Ich schreibe eine richtige Antwort auf, aber es stellt sich heraus vmhgfs-fuse, dass der Root-Zugriff standardmäßig nicht erlaubt ist.
Dave Dribin

Antworten:

3

Dank eines oben genannten Tipps von @dirkt konnte ich feststellen, dass vmhgfs-fuseRoot-Zugriff standardmäßig nicht zulässig ist . Aus der vmhgfs-fuse --helpAusgabe:

    -o allow_other         allow access to other users
    -o allow_root          allow access to root

Der Versuch schlug -o allow_rootzunächst fehl:

$ vmhgfs-fuse -o allow_root ".host:/$(vmware-hgfsclient)" ~/Shared
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

Und sicher genug /etc/fuse.confhat user_allow_otherauskommentiert:

# Allow non-root users to specify the allow_other or allow_root mount options.
#user_allow_other

Aber es hat vmhgfs-fuseendlich geklappt, als root zu laufen :

$ sudo vmhgfs-fuse -o allow_other ".host:/$(vmware-hgfsclient)" ~/Shared
$ sudo mount -t ext3 -o loop,ro ~/Shared/linux-ext3.img /mnt
$ ls /mnt/
...

Beachten Sie die Verwendung von allow_othernicht allow_root. Die Verwendung von sudoPlus -o allow_rootist redundant, da vmhgfs-fusenur der Benutzer Zugriff erhält , der den Befehl ausführt. Allerdings sudobedeutet allein nur root zugreifen können ~/Shared, aber nicht Ihre normalen Benutzer. Durch die Verwendung von sudoPlus -o allow_otherkönnen root und Ihr normaler Benutzer (und alle anderen) darauf zugreifen ~/Shared. Es könnte sein , sicherer, in einer wirklich gemeinsamen Umgebung zu ermöglichen , user_allow_otherin /etc/fuse.confso dass Sie verwenden können -o allow_rootund vermeiden Sie laufen vmhgfs-fusemit sudo.

Und um es kurz zu machen:

$ sudo umount /mnt
$ sudo fusermount -u ~/Shared
Dave Dribin
quelle
1

Alternativ habe ich herausgefunden, wie man es vermeidet, irgendetwas als root zu mounten, indem man verwendet fuse-ext2. Zuerst muss das installiert werden:

$ sudo apt-get install fuseext2

Und dann montiere es so:

$ vmhgfs-fuse ".host:/$(vmware-hgfsclient)" ~/Shared
$ fuse-ext2 ~/Shared/linux-ext3.img ~/mnt/ -o ro
$ ls ~/mnt/
...

Beachten Sie, dass dies nicht verwendet wird sudound nur für Ihren Benutzer sichtbar ist. Verwenden Sie zum Abmelden Folgendes:

$ fusermount -u ~/mnt
$ fusermount -u ~/Shared
Dave Dribin
quelle