Sembra che mount -o loop
cambi il file di immagine montato. Ho scaricato il file immagine ISO e controllato il suo checksum SHA-1. Quindi ho montato quel file ISO e il checksum è cambiato. Ecco i passaggi esatti che ho fatto, un copia-incolla dalla mia console, CentOS 7 x64 (nota, che il file ISO è di sola lettura):
[mbartnicki@89-78-33-81 Downloads]$ ls -lh
total 3.1G
-r--r--r--. 1 mbartnicki mbartnicki 3.1G Mar 31 18:28 X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso
6c9058389c1e2e5122b7c933275f963edf1c07b9 X17-58997.iso
[mbartnicki@89-78-33-81 Downloads]$ sudo mount -o loop X17-58997.iso /mnt/iso/
mount: /dev/loop0 is write-protected, mounting read-only
[mbartnicki@89-78-33-81 Downloads]$ sha1sum X17-58997.iso
994944df320e9e03c032263d7b9e36157a0a587c X17-58997.iso
Sono stato così sorpreso che ho ripetuto i passaggi precedenti su un'altra macchina (Ubuntu 14.04 x64), solo per ottenere lo stesso risultato: il checksum dei file è cambiato dopo mount -o loop
. Smontare l'immagine ISO non riporta il suo checksum al valore originale; la modifica del file è persistente. Inoltre, il montaggio successivo modifica nuovamente il checksum in un nuovo valore. Come può essere spiegato?
PS
Il montaggio esplicitamente di sola lettura aggiungendo l' ro
opzione mount impedisce la modifica del file, quindi se utilizzo:
sudo mount -o ro,loop X17-58997.iso /mnt/iso
quindi tutto è OK e il file di immagine ISO dura invariato dopo il montaggio. Il comportamento errato si verifica solo quando l' ro
opzione non è specificata, anche se il file immagine ISO è di sola lettura a livello di file system. Ho provato su tre diverse immagini ISO: DVD di installazione di Windows 7 (ufficiale), SystemRescueCD (piccolo salvataggio Linux) e ISO fatti a mano creati dallo genisoimage
strumento.
Ho controllato tutti quei file ISO con l' file
utilità e file
ho detto che tutti sono dati del file system CD-ROM ISO 9660 . I file all'interno delle immagini ISO non vengono modificati - l'ho anche controllato - sembra che lo scenario di montaggio difettoso aggiunga alcuni metadati o semplicemente spazzatura.
genisoimage -o empty.iso emptydir
?
iso
? È possibile utilizzare mknod -m 660 /dev/loop1 b 7 1
anche dopo l'esecuzionechmod 660 /dev/loop*