Comment monter un fichier image sans root?


8

J'ai un fichier avec un système de fichiers ext4 et je veux le monter sans utiliser sudo à chaque fois (le script doit s'exécuter avec les droits d'utilisateur). Le fichier que je veux monter et le dossier dans lequel je veux le monter sont tous les deux dans mon répertoire personnel qui est crypté, donc je ne peux pas mettre l'emplacement du fichier /etc/fstab.

J'ai essayé fusermountmais j'obtiens toujours des messages d'erreur comme "fusermount: arguments supplémentaires après le point de montage".



@muru Merci, malheureusement, il s'agit d'ext2. Même si l'accès en écriture est possible, je n'aurai pas de journalisation car ext2 n'en a pas. J'ai besoin de journalisation.
UTF-8 du

1
Ensuite, vous devrez vivre avec le fait d'être en quelque sorte root.
muru

unix.stackexchange.com/a/32157/10805 Quelle était la fusermountcommande que vous avez essayée?
earthmeLon

Réponses:


2

Vous pouvez l'avoir dans / etc / fstab. Mon répertoire personnel est crypté, mais:

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

S'il dit que parce qu'il est chiffré, il ne peut pas le mettre dans / etc / fstab, il a raison. Cela ne le monte pas complètement.
David

Eh bien, rien ne m'empêche de l'écrire /etc/fstab, alors je l'ai essayé avant de poster cette quête. Je savais qu'il ne le monterait probablement pas mais j'ai supposé que cela échouerait sans conséquences et que le fait qu'il soit en /etc/fstabm'a permis de le monter sans root. Malheureusement, cela a provoqué un échec de démarrage de mon système et j'ai dû supprimer la ligne pour pouvoir utiliser à nouveau ma machine.
UTF-8 du

David, tout ce que j'ai écrit, je l'ai exécuté sur un PC avec / home monté sur une partition cryptée. Et cela a fonctionné. Et je ne vois pas pourquoi cela n'a pas pu.
Alessandro

UTF-8, pour qu'il fonctionne / maison doit être monté avant votre fichier. Ou vous définissez votre fichier pour qu'il ne soit pas monté automatiquement, comme je l'ai défini dans les directions que je vous ai données, c'est un scénario réel.
Alessandro

Qui a mis le ext4_filefichier fstab?? Tu n'as rien sauté?
Mohammad Kholghi

2

Vous pouvez utiliser udiskctl:

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

Maintenant, votre fichier est mappé sur un block device, et vous pouvez le monter comme:

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

lorsque vous avez terminé, démonter utilise:

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

enfin, supprimez-le en:

$ udisksctl loop-delete -b /dev/loop6

S'amuser!


J'ai essayé de monter une image Linux que j'avais autour ( kali-linux-2019.1a-amd64.iso) mais j'obtiens toujours: Object /org/freedesktop/UDisks2/block_devices/loop5 is not a mountable filesystem.(Avec le nombre de périphériques variant, bien sûr.) Cela se produit même lorsque j'essaie de le monter en lecture seule. Le montage en lecture seule via sudo mountfonctionne très bien.
UTF-8

réutiliser udisksctl loop-setup --file your_file.iso, donc il vous donne un nouveau périphérique de boucle, et montez celui-ci (par exemple /dev/loop8). Dans mon système d'exploitation, cela ne fonctionne pas loop6et je ne sais pas pourquoi. @ UTF-8
Mohammad Kholghi

2

GNOME Disk Image Mounter

À côté de udisksctlet guestmount( libguestfs-tools), vous pouvez simplement:

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

Du manuel :

Acceptez les fichiers normaux et les URI GVfs (tels que smb: //filer/media/file.iso) ")

Par défaut, les images de disque sont attachées en lecture seule, utilisez l'option --writable pour changer cela.


1

guestmount libguestfs ruse

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

Repose sur:

  • implémentation des systèmes de fichiers dans l'espace utilisateur
  • FUSIBLE

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

Testé sur Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.