VMWareで実行されているLinux VMのMacにLinux ext3ディスクイメージをマウントするにはどうすればよいですか?


2

MacにダウンロードしたLinux ext3ディスクイメージがあります(macOS Sierra 10.12.3を実行しています)。Mac上のVMWare(Fusionバージョン8.5.3)で実行されているLinux VM(Ubuntu 16.04)もあります。このディスクイメージをLinux VMにマウントしたいと思います。

ディスクイメージを含むMac上のフォルダーをVMに共有しました。次のコマンドを使用してマウントできます。

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

しかし、このディレクトリにディスクイメージをマウントしようとすると、アクセス拒否エラーが表示されます。

$ 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

読み取り専用でマウントしようとしても、同じことが起こります。

$ 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

共有ディレクトリは読み書き可能にマウントされます。

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

また、ディスクイメージファイルはすべてのユーザーが読み書きできます。

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

そのため、このエラーが発生する理由がわかりません。


FUSEのallow_root/ allow_otherと実際のルートとのやり取りには注意が必要です(そして、私もいつも混乱しています)。試してみてくださいchmod o+rw linux-ext3.img
dirkt

@dirkt:いいですね。私はそれを試みたが、役に立たなかった。同じ「Permission denied」エラーが発生しました。
デイブドリビン

慣れvmhgfs-fuseていない:サポートされていない場合はchmod、イメージをrootに読み取り可能にするものを試してください:sudo vmhgfs-fuse ...、またはrootのメンバーを作成するdialoutなど。逆に、イメージを読み取り専用でマウントしてみてください。
dirkt

@dirkt:ああ!「画像をrootが読み取れるようにするものなら何でも試してみてください」についてのヒントをありがとう。適切な答えを書きvmhgfs-fuseますが、デフォルトではルートアクセスが許可されていません。
デイブドリビン

回答:


3

上記の@dirktによるヒントのおかげvmhgfs-fuseで、デフォルトでルートアクセスが許可されていないことを確認できました。vmhgfs-fuse --help出力から:

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

しようとは、-o allow_root最初に失敗しました:

$ 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

そして、十分/etc/fuse.confuser_allow_otherコメントアウトしていることを確認してください:

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

しかしvmhgfs-fuse、最終的にはrootで実行するとうまくいきました:

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

allow_othernot の使用に注意してくださいallow_root。コマンドを実行するユーザーにのみアクセスを許可するため、sudoプラスの使用-o allow_rootは冗長vmhgfs-fuseです。ただし、sudo単独では、にのみ rootアクセスでき~/Shared、通常のユーザーにはアクセスできません。sudoplus を使用すると-o allow_other、rootおよび通常のユーザー(および他のユーザー)がにアクセスできます~/Shared。を使用して実行を回避できるように、真に共有された環境で有効user_allow_other/etc/fuse.confする方が安全かもしれません。-o allow_rootvmhgfs-fusesudo

そして、記録のために、これをすべてアンマウントします。

$ sudo umount /mnt
$ sudo fusermount -u ~/Shared

1

あるいは、を使用して、ルートとして何かをマウントしないようにする方法を見つけましたfuse-ext2。まず、インストールする必要があります:

$ sudo apt-get install fuseext2

そして、次のようにマウントします。

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

これは使用せずsudo、ユーザーにのみ表示されることに注意してください。アンマウントするには、次を使用します。

$ fusermount -u ~/mnt
$ fusermount -u ~/Shared
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.