web-dev-qa-db-ja.com

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

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

ディスクイメージを含む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

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

2
Dave Dribin

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

$ 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
1
Dave Dribin

上記の@dirktによるヒントのおかげで、vmhgfs-Fuseがデフォルトでrootアクセスを許可していないことを確認できました。 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

しかし、rootとしてvmhgfs-Fuseを実行すると、ようやく機能しました。

$ 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_otherではなくallow_rootの使用に注意してください。 Sudo-o allow_rootの使用は冗長です。これは、vmhgfs-Fuseがコマンドを実行するユーザーにのみアクセスを許可するためです。ただし、Sudoだけでは、のみroot~/Sharedにアクセスできますが、通常のユーザーにはアクセスできません。 Sudo-o allow_otherを使用すると、rootと通常のユーザー(およびその他のユーザー)が~/Sharedにアクセスできます。真に共有された環境では、user_allow_other/etc/Fuse.confを有効にして、-o allow_rootを使用し、Sudovmhgfs-Fuseを実行しないようにする方が安全な場合があります。

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

$ Sudo umount /mnt
$ Sudo fusermount -u ~/Shared
3
Dave Dribin