3

У меня есть образ диска Linux ext3, который я скачал на своем Mac (под управлением macOS Sierra 10.12.3). У меня также есть виртуальная машина Linux (Ubuntu 16.04), работающая в VMWare (версия Fusion 8.5.3) на Mac. Я хотел бы смонтировать этот образ диска в виртуальной машине Linux.

Я поделился папкой на Mac с образом диска для виртуальной машины, и я могу смонтировать ее с помощью этой команды:

$ 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 ответа2

4

Благодаря подсказке @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

Но запуск 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_other не allow_root . Использование sudo plus -o allow_root является избыточным, поскольку vmhgfs-fuse предоставляет доступ только пользователю, который запускает команду. Однако само sudo означает, что только root может получить доступ к ~/Shared , но не к вашему обычному пользователю. Использование sudo plus -o allow_other позволяет пользователю root и вашему обычному пользователю (и всем остальным) получить доступ к ~/Shared . В действительно общей среде может быть безопаснее включить user_allow_other в /etc/fuse.conf чтобы вы могли использовать -o allow_root и избежать запуска vmhgfs-fuse с sudo .

И, для записи, размонтировать все это:

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

Кроме того, я узнал, как избежать монтирования чего-либо от имени пользователя root, используя 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .