ルートなしでイメージファイルをマウントする方法は?


8

ext4ファイルシステムを含むファイルがあり、毎回sudoを使用せずにマウントしたい(スクリプトはユーザー権限で実行する必要があります)。マウントしたいファイルとマウントしたいフォルダの両方が暗号化されたホームディレクトリにあるため、ファイルの場所をに入れることができません/etc/fstab

試しましたfusermountが、「fusermount:マウントポイントの後に追加の引数」のようなエラーメッセージが常に表示されます。



@muruありがとうございます、残念ながらext2についてです。書き込みアクセスが可能であっても、ext2にはジャーナリングがなかったため、ジャーナリングはありません。ジャーナリングが必要です。
UTF-8

1
次に、どういうわけか根である必要があると生きる必要があります。
muru

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を備えたPCで演奏しました。そしてそれはうまくいきました。そして、それができなかった理由がわかりません。
アレッサンドロ

UTF-8が機能するためには、ファイルの前に/ homeをマウントする必要があります。または、ファイルが自動的にマウントされないように設定しました。私が指定した方向に設定したように、実際のシナリオです。
アレッサンドロ

誰がext4_fileファイルを入れましたfstabか?何もスキップしませんでしたか?
Mohammad Kholghi

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。私のOSでは、それを使用しても機能せず、そのloop6理由もわかりません。@ UTF-8
Mohammad Kholghi

2

GNOMEディスクイメージマウンター

()のほかにudisksctl、次のことができます。guestmountlibguestfs-tools

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

マニュアルから

通常のファイルとGVfs URI(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

依存している:

  • ファイルシステムのユーザーランド実装
  • ヒューズ

ドキュメント:http : //libguestfs.org/guestmount.1.html

Ubuntu 18.04、libguestfs-tools 1:1.36.13-1ubuntu3でテスト済み。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.