Wie kann ich eine Image-Datei ohne Root mounten?


8

Ich habe eine Datei mit einem ext4-Dateisystem und möchte sie jedes Mal ohne Verwendung von sudo bereitstellen (das Skript sollte mit Benutzerrechten ausgeführt werden). Die Datei, die ich mounten möchte, und der Ordner, in den ich sie auch mounten möchte, befinden sich in meinem Home-Verzeichnis, das verschlüsselt ist, sodass ich den Speicherort der Datei nicht ablegen kann /etc/fstab.

Ich habe es versucht, fusermountaber ich erhalte immer Fehlermeldungen wie "fusermount: zusätzliche Argumente nach dem Mountpoint".



@muru Danke, leider geht es hier um ext2. Selbst wenn Schreibzugriff möglich ist, habe ich kein Journaling, da ext2 kein Journaling hatte. Ich brauche Journaling.
UTF-8

1
Dann musst du damit leben, irgendwie Wurzel sein zu müssen.
Muru

unix.stackexchange.com/a/32157/10805 Welchen fusermountBefehl haben Sie versucht?
EarthmeLon

Antworten:


2

Sie können es in / etc / fstab haben. Mein Home-Verzeichnis ist noch verschlüsselt:

$ 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)

Wenn er sagt, dass er es nicht in / etc / fstab einfügen kann, weil es verschlüsselt ist, hat er Recht. Das montiert es nicht vollständig.
David

Nun, nichts hindert mich daran, es zu schreiben /etc/fstab, also habe ich es versucht, bevor ich diese Quest gepostet habe. Ich wusste, dass es wahrscheinlich nicht gemountet werden würde, ging aber davon aus, dass es möglicherweise ohne Konsequenzen fehlschlagen würde und dass die Tatsache, dass es drin ist, /etc/fstabes mir ermöglichte, es ohne Root zu mounten. Leider konnte mein System dadurch nicht gestartet werden und ich musste die Leitung entfernen, um meinen Computer wieder verwenden zu können.
UTF-8

David, alles, was ich geschrieben habe, habe ich auf einem PC mit / home auf einer verschlüsselten Partition ausgeführt. Und es hat funktioniert. Und ich kann nicht verstehen, warum es nicht konnte.
Alessandro

UTF-8 muss vor Ihrer Datei bereitgestellt werden, damit es funktioniert / zu Hause. Oder Sie legen fest, dass Ihre Datei nicht automatisch gemountet wird, so wie ich es in den Anweisungen festgelegt habe, die ich Ihnen gegeben habe. Es handelt sich um ein reales Szenario.
Alessandro

Wer hat die ext4_fileDatei abgelegt fstab? Hast du nichts übersprungen?
Mohammad Kholghi

2

Sie können verwenden udiskctl:

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

Jetzt ist Ihre Datei a zugeordnet block deviceund Sie können sie wie folgt bereitstellen :

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

Wenn Sie fertig sind, verwendet Unmount:

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

Zum Schluss löschen Sie es durch:

$ udisksctl loop-delete -b /dev/loop6

Habe Spaß!


Ich habe versucht, ein Linux-Image zu mounten, das ich herumliegen hatte ( kali-linux-2019.1a-amd64.iso), aber ich bekomme immer: Object /org/freedesktop/UDisks2/block_devices/loop5 is not a mountable filesystem.(Natürlich mit variierender Gerätenummer.) Dies passiert auch, wenn ich versuche, es schreibgeschützt zu mounten. Die schreibgeschützte Montage über sudo mountfunktioniert einwandfrei.
UTF-8

Verwenden Sie es udisksctl loop-setup --file your_file.isoerneut, damit Sie ein neues Loop-Gerät erhalten, und montieren Sie dieses (z /dev/loop8. B. ). In meinem Betriebssystem funktioniert es nicht mit loop6und ich weiß nicht warum. @ UTF-8
Mohammad Kholghi

2

GNOME Disk Image Mounter

Neben udisksctlund guestmount( libguestfs-tools) können Sie einfach:

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

Aus dem Handbuch :

Akzeptieren Sie sowohl reguläre Dateien als auch GVfs-URIs (z. B. smb: //filer/media/file.iso) ")

Standardmäßig sind die Disk-Images schreibgeschützt angehängt. Verwenden Sie die Option --writable, um dies zu ändern.


1

guestmount libguestfs trickery

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

Beruht auf:

  • Userland-Implementierung der Dateisysteme
  • SICHERUNG

Dokumente: http://libguestfs.org/guestmount.1.html

Getestet unter Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.