我有一个带有 ext4 文件系统的文件,我想在每次不使用 sudo 的情况下挂载它(脚本应该以用户权限运行)。我想挂载的文件和我想挂载它的文件夹都在我的主目录中,该目录已加密,因此我无法将文件位置放入/etc/fstab
。
我尝试过fusermount
,但总是收到类似“fusermount:挂载点后的额外参数”的错误消息。
答案1
您可以使用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.
完成后,卸载正在使用:
$ udisksctl unmount -b /dev/loop6
Unmounted /dev/loop6.
最后,通过以下方式删除它:
$ udisksctl loop-delete -b /dev/loop6
玩得开心!
答案2
GNOME 磁盘映像挂载程序
旁udisksctl
和guestmount
(libguestfs-tools
)您可以:
gnome-disk-image-mounter ~/ISOs/file.iso
从手册:
接受常规文件和 GVfs URI(例如 smb://filer/media/file.iso)”
默认情况下,磁盘映像以只读形式附加,使用选项--writable 可以更改此设置。
gnome-disk-image-mounter
是包的一部分gnome-disk-utility
,它还带来了gnome-disks
(运行它-h
以获取更多信息)。- 尽管它的名字你可以在 KDE 上使用它无需任何 gnome 依赖。
- 另请检查
gio mount
和udisksctl
。 - 也可以看看如何从终端访问 USB 闪存驱动器?
答案3
您可以在 /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)
答案4
guestmount
libguestfs 诡计
sudo apt-get install libguestfs-tools
# Workarounds for Ubuntu 18.04 bugs.
# https://serverfault.com/questions/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
依靠:
- 文件系统的用户空间实现
- 保险丝
文档:http://libguestfs.org/guestmount.1.html
在 Ubuntu 18.04、libguestfs-tools 1:1.36.13-1ubuntu3 上测试。