Jak zamontować plik obrazu bez roota?

8

Mam plik z systemem plików ext4 i chcę go montować bez użycia sudo za każdym razem (skrypt powinien działać z prawami użytkownika). Plik, który chcę zamontować, i folder, który też chcę zamontować, znajdują się w moim katalogu domowym, który jest zaszyfrowany, więc nie mogę umieścić w nim lokalizacji pliku /etc/fstab.

Próbowałem, fusermountale zawsze otrzymuję komunikaty o błędach, takie jak „fusermount: dodatkowe argumenty po punkcie montowania”.

UTF-8
źródło
@muru Dziękuję, niestety chodzi o ext2. Nawet jeśli dostęp do zapisu jest możliwy, nie będę mieć kronikowania, ponieważ ext2 nie miał kronikowania. Potrzebuję kronikowania.
UTF-8
1
Wtedy będziesz musiał żyć jakoś rootować.
muru
unix.stackexchange.com/a/32157/10805 Jakie było fusermountpolecenie, które wypróbowałeś?
earthmeLon

Odpowiedzi:

2

Możesz go mieć w / etc / fstab. Mój katalog domowy jest zaszyfrowany, ale:

$ 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)
Alessandro
źródło
Jeśli mówi, że ponieważ jest zaszyfrowany, nie może umieścić go w / etc / fstab, to ma rację. To nie w pełni go montuje.
David
Cóż, nic nie powstrzymuje mnie przed napisaniem tego /etc/fstab, więc wypróbowałem to, zanim opublikowałem to zadanie. Wiedziałem, że prawdopodobnie nie zamontuje go, ale założyłem, że może się nie powiedzie bez konsekwencji i że fakt, że jest /etc/fstabwłączony, umożliwił mi zamontowanie go bez rootowania. Niestety spowodowało to, że mój system nie uruchomił się i musiałem usunąć linię, aby móc ponownie korzystać z mojego komputera.
UTF-8
David, wszystko, co napisałem, wykonałem na komputerze z / home zamontowanym na zaszyfrowanej partycji. I zadziałało. I nie rozumiem, dlaczego nie mógł.
Alessandro,
UTF-8, aby działał / home musi być zamontowany przed plikiem. Albo ustawiasz, aby plik nie był montowany automatycznie, tak jak ja ustawiłem go zgodnie ze wskazówkami, które ci dałem, są to rzeczywiste scenariusze.
Alessandro,
Kto umieścił ext4_fileplik fstab? Niczego nie pominąłeś?
Mohammad Kholghi
2

Możesz użyć udiskctl:

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

Teraz twój plik jest zamapowany na a block device, i możesz go zamontować jako:

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

kiedy skończysz, odmontuj używa:

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

na koniec usuń:

$ udisksctl loop-delete -b /dev/loop6

Baw się dobrze!

Mohammad Kholghi
źródło
Próbowałem zamontować jakiś obraz Linuksa, który miałem wokół ( kali-linux-2019.1a-amd64.iso), ale zawsze otrzymuję: Object /org/freedesktop/UDisks2/block_devices/loop5 is not a mountable filesystem.(Przy różnym numerze urządzenia, oczywiście). Dzieje się tak nawet wtedy, gdy próbuję zamontować go tylko do odczytu. Montowanie go tylko do odczytu za pomocą sudo mountdziała dobrze.
UTF-8
użyj udisksctl loop-setup --file your_file.isoponownie, aby uzyskać nowe urządzenie pętli i zamontuj je (np /dev/loop8.). W moim systemie operacyjnym nie działa loop6i nie wiem dlaczego. @ UTF-8
Mohammad Kholghi
2

GNOME Disk Image Mounter

Oprócz udisksctli guestmount( libguestfs-tools) możesz po prostu:

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

Z instrukcji :

Zaakceptuj zarówno zwykłe pliki, jak i identyfikatory URI GVfs (takie jak smb: //filer/media/file.iso) ")

Domyślnie obrazy dysków są dołączone tylko do odczytu, aby to zmienić, użyj opcji --writable.

Pablo Bianchi
źródło
1

guestmount oszustwo 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

Polega na:

  • implementacja systemów plików dla użytkowników
  • BEZPIECZNIK

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

Testowany na Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3.

Ciro Santilli
źródło