Как смонтировать файл образа без рута?


8

У меня есть файл с файловой системой ext4, и я хочу монтировать его без использования sudo каждый раз (скрипт должен запускаться с правами пользователя). Файл, который я хочу смонтировать, и папка, которую я тоже хочу смонтировать, находятся в моем домашнем каталоге, который зашифрован, поэтому я не могу указать местоположение файла /etc/fstab.

Я пытался, fusermountно я всегда получаю сообщения об ошибках типа "fusermount: дополнительные аргументы после точки монтирования".



@muru Спасибо, к сожалению, речь идет о ext2. Даже если доступ для записи возможен, я не буду вести журнал, потому что в ext2 не было ведения журнала. Мне нужно вести журнал.
UTF-8

1
Тогда вам придется смириться с необходимостью быть пользователем root.
Муру

unix.stackexchange.com/a/32157/10805 Какую fusermountкоманду вы пробовали?
earthmeLon

Ответы:


2

Вы можете получить его в / etc / fstab. Мой домашний каталог зашифрован, но:

$ dd if=/dev/zero of=ext4_file bs=1024 count=1024
1024+0 records in
1024+0 records out
1048576 bytes (1,0 MB) copied, 0,0341311 s, 30,7 MB/s
$ /sbin/mkfs.ext4 -F ext4_file
mke2fs 1.42.12 (29-Aug-2014)

Filesystem too small for a journal
Discarding device blocks: done                            
Creating filesystem with 1024 1k blocks and 128 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done

$ grep ext4_directory /etc/fstab
/home/alessandro/ext4_file /home/alessandro/ext4_directory ext4 noauto,user 0 0
$ mount ext4_directory
$ mount | grep ext4_directory
/home/alessandro/ext4_file on /home/alessandro/ext4_directory type ext4 (rw,nosuid,nodev,noexec,relatime,user=alessandro)

Если он говорит это, потому что он зашифрован, он не может поместить его в / etc / fstab, он прав. Это не полностью смонтировать его.
Дэвид

Ну, ничто не мешает мне написать это /etc/fstab, поэтому я попробовал это, прежде чем опубликовать этот квест. Я знал, что он, вероятно, не будет монтировать его, но предполагал, что, возможно, он потерпит неудачу без последствий и что тот факт, что он /etc/fstabвключен, позволил мне монтировать его без рута. К сожалению, это привело к тому, что моя система не загрузилась, и мне пришлось удалить строку, чтобы иметь возможность снова использовать мою машину.
UTF-8

Дэвид, все, что я написал, я выполнил на ПК с / home, смонтированным в зашифрованном разделе. И это сработало. И я не могу понять, почему это не могло.
Алессандро

UTF-8, для его работы / дома должен быть смонтирован перед вашим файлом. Или вы установили, что ваш файл не будет монтироваться автоматически, как я установил в соответствии с указаниями, которые я вам дал, это реальный сценарий.
Алессандро

Кто положил ext4_fileфайл в fstab?? Ты ничего не пропустил?
Мохаммад Холги

2

Вы можете использовать udiskctl:

$ udisksctl loop-setup --file your_file.iso
Mapped file your_file.iso as /dev/loop6.

Теперь ваш файл сопоставлен с block device, и вы можете смонтировать его как:

$ udisksctl mount -b /dev/loop6
Mounted /dev/loop6 at /media/user/your_file.

когда вы закончите, unmount использует:

$ udisksctl unmount -b /dev/loop6
Unmounted /dev/loop6.

наконец, удалите его:

$ udisksctl loop-delete -b /dev/loop6

Радоваться, веселиться!


Я попытался смонтировать какой-нибудь образ Linux, который лежал вокруг ( kali-linux-2019.1a-amd64.iso), но всегда получаю: Object /org/freedesktop/UDisks2/block_devices/loop5 is not a mountable filesystem.(Конечно, с изменяющимся номером устройства). Это происходит, даже когда я пытаюсь смонтировать его только для чтения. Монтирование только для чтения через sudo mountработает просто отлично.
UTF-8

используйте udisksctl loop-setup --file your_file.isoснова, чтобы получить новое петлевое устройство, и смонтируйте его (например /dev/loop8). В моей ОС это не работает, loop6и я не знаю почему. @ UTF-8
Мохаммад Холги

2

GNOME Disk Image Mounter

Рядом udisksctlс guestmount( libguestfs-tools) вы можете просто:

gnome-disk-image-mounter ~/ISOs/file.iso

Из руководства :

Принимайте как обычные файлы, так и URI GVfs (например, smb: //filer/media/file.iso) ")

По умолчанию образы дисков прикреплены только для чтения, используйте параметр --writable, чтобы изменить это.


1

guestmount Обман libguestfs

sudo apt-get install libguestfs-tools

# Workarounds for Ubuntu 18.04 bugs.
# /server/246835/convert-directory-to-qemu-kvm-virtual-disk-image/916697#916697
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*

# Create a test image.
mkdir sysroot
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2

# Mount it, have fun, unmount!
mkdir -p mnt
# /dev/sda becuase we have a raw filesystem.
guestmount -a sysroot.ext2.qcow2 -m /dev/sda mnt
cmp sysroot/myfile mnt/myfile
guestunmount mnt

Полагается на:

  • пользовательская реализация файловых систем
  • FUSE

Документы: http://libguestfs.org/guestmount.1.html

Протестировано на Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.