Ricerca nel sito web

Spiegazione del comando Linux md5sum per principianti (5 esempi)


Su questa pagina

  1. Comando Linux md5sum
  2. D1. Come visualizzare il valore hash?
  3. Q2. Come convalidare più file contemporaneamente?
  4. Q3. Come visualizzare solo i file modificati?
  5. Q4. Come rilevare le modifiche in uno script?
  6. D5. Come identificare i valori hash non validi?
  7. Conclusione

Durante il download di file, in particolare l'installazione di file che sono stati scaricati da un sito Web, tramite protocollo torrent o server FTP, è bene verificare che il download sia valido. I siti Web spesso visualizzano un valore hash per ogni file per assicurarsi che il download sia completato correttamente. Questo articolo discuterà il comando md5sum che puoi utilizzare per convalidare il download. Altre tre utilità, sha1sum, sha256sum e sha512sum, funzionano allo stesso modo di md5sum. Questo tutorial è compatibile con tutte le principali distribuzioni Linux.

Comando linux md5sum

Il comando md5sum stampa un checksum di 32 caratteri (128 bit) del file specificato, utilizzando l'algoritmo MD5. Di seguito è riportata la sintassi dei comandi di questo strumento da riga di comando:

md5sum [OPTION]... [FILE]...

Ed ecco come la pagina man di md5sums lo spiega:

Print or check MD5 (128-bit) checksums.

I seguenti esempi in stile Q&A ti daranno un'idea ancora migliore dell'utilizzo di base di md5sum.

Nota: utilizzeremo tre file denominati file1.txt, file2.txt e file3.txt come file di input nei nostri esempi. Il testo in ciascun file è elencato di seguito.

file1.txt:

hi
hello
how are you
thanks.

file2.txt:

hi
hello to you
I am fine
Your welcome!

file3.txt:

hallo
Guten Tag
Wie geht es dir
Danke.

Q1. Come visualizzare il valore hash?

Utilizzare il comando senza alcuna opzione per visualizzare il valore hash e il nome del file.

md5sum file1.txt

Ecco l'output prodotto da questo comando sul nostro sistema:

[Documents]$ md5sum file1.txt
1ff38cc592c4c5d0c8e3ca38be8f1eb1  file1.txt
[Documents]$

L'output può anche essere visualizzato in un formato in stile BSD usando l'opzione --tag.

md5sum --tag file1.txt
[Documents]$ md5sum --tag file1.txt
MD5 (file1.txt) = 1ff38cc592c4c5d0c8e3ca38be8f1eb1
[Documents]$

D2. Come convalidare più file contemporaneamente?

Il comando md5sum può convalidare più file contemporaneamente. Aggiungeremo file2.txt e file3.txt per dimostrare le capacità.

Se scrivi gli hash in un file, puoi utilizzare quel file per verificare se qualcuno dei file è cambiato. Qui stiamo scrivendo gli hash dei file negli hash dei file, e quindi li usiamo per convalidare che nessuno dei file sia cambiato.

md5sum file1.txt file2.txt file3.txt > hashes
md5sum --check hashes
[Documents]$ md5sum file1.txt file2.txt file3.txt > hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: OK
[Documents]$ 

Ora cambieremo file3.txt, aggiungendo un singolo punto esclamativo alla fine del file, ed eseguiremo nuovamente il comando.

echo "!" >> file3.txt
md5sum --check hashes
[Documents]$ md5sum --check hashes
file1.txt: OK
file2.txt: OK
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$ 

Puoi vedere che file3.txt è cambiato.

D3. Come visualizzare solo i file modificati?

Se hai molti file da controllare, potresti voler visualizzare solo i file che sono stati modificati. Utilizzando l'opzione \--quiet\, md5sum elencherà solo i file che sono stati modificati.

md5sum --quiet --check hashes
[Documents]$ md5sum --quiet --check hashes
file3.txt: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[Documents]$

D4. Come rilevare le modifiche in uno script?

Potresti voler usare md5sum in uno script. Usando l'opzione \--status\, md5sum non stamperà alcun output. Invece, il codice di stato restituisce 0 se non ci sono modifiche e 1 se i file non corrispondono. Il seguente script hashes.sh restituirà un 1 nel codice di stato perché i file sono cambiati. Il file di script è di seguito:

sh hashes.sh
hashes.sh:
#!/bin/bash
md5sum --status --check hashes
Result=$?
echo "File check status is: $Result"
exit $Result

[Documents]$ sh hashes.sh
File check status is: 1
[ Documents]$ 

Q5. Come identificare i valori hash non validi?

md5sum può farti sapere se hai hash non validi quando confronti i file. Per avvisarti se qualche valore hash non è corretto, puoi usare l'opzione --warn. Per quest'ultimo esempio, useremo sed per inserire un carattere extra all'inizio della terza riga. Questo cambierà il valore hash negli hash del file, rendendolo non valido.

sed -i '3s/.*/a&/' hashes
md5sum --warn --check hashes

Questo mostra che la terza riga ha un hash non valido.

[Documents]$ sed -i '3s/.*/a&/' hashes
[Documents]$ md5sum --warn --check hashes
file1.txt: OK
file2.txt: OK
md5sum: hashes: 3: improperly formatted MD5 checksum line
md5sum: WARNING: 1 line is improperly formatted
[Documents]$

Conclusione

Il md5sum è un semplice comando che può convalidare rapidamente uno o più file per determinare se qualcuno di essi è stato modificato rispetto al file originale. Per ulteriori informazioni su md5sum, vedere la relativa pagina man.