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
そのため、なぜこのエラーが発生するのかわかりません。
または、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
上記の@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.conf
がuser_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
を使用し、Sudo
でvmhgfs-Fuse
を実行しないようにする方が安全な場合があります。
そして、記録のために、これをすべてアンマウントするには:
$ Sudo umount /mnt
$ Sudo fusermount -u ~/Shared