sha256sum / md5sum în Linux / Bash

Calculează și verifică sume de control (SHA-256, MD5) ca să știi dacă un fișier este identic cu originalul.

Sintaxă comandă
sha256sum [opțiuni] [FIȘIER...]
sha256sum -c FIȘIER_SUME

Ce face sha256sum / md5sum

sha256sum citește un fișier și afișează amprenta lui SHA-256: 64 de caractere hexazecimale urmate de numele fișierului. Două fișiere cu aceeași amprentă au, practic sigur, același conținut. Site-urile de distribuții publică astfel de sume lângă imaginile ISO, ca să poți verifica descărcarea.

Familia include md5sum, sha1sum, sha512sum și altele, cu aceleași opțiuni. Cu -c, comanda citește un fișier de sume și verifică fiecare fișier listat, afișând OK sau FAILED; codul de ieșire este 1 dacă ceva nu se potrivește.

Opțiuni și argumente

Opțiune / Parametru Descriere
-c, --check Verifică fișierele listate într-un fișier de sume.
--quiet La verificare, afișează doar fișierele care nu se potrivesc.
--ignore-missing La verificare, sare peste fișierele care lipsesc de pe disc.
md5sum, sha1sum, sha512sum Aceeași comandă pentru alți algoritmi. Pentru securitate folosește SHA-256 sau SHA-512.

Exemple

Exemplul 1: Sumele unor fișiere și verificarea lor

Salvăm sumele într-un fișier, apoi le verificăm. Așa poți controla o copie de siguranță mutată pe alt disc.

printf 'Ana,Iasi,450\n' > clienti.csv
printf 'Raport octombrie\n' > raport.txt
sha256sum clienti.csv raport.txt > sume.sha256
cat sume.sha256
sha256sum -c sume.sha256

Rezultat

dc9997aa2a17942ae33ccb22d527b76d340724a209575c0cb14b06c497565264  clienti.csv
3139a18bb1e03ddc7393cc710ecf7e76b3a959c59d6a8964ef68f48ddacac390  raport.txt
clienti.csv: OK
raport.txt: OK

Exemplul 2: Detectarea unui fișier modificat

După ce adăugăm un rând în raport.txt, verificarea eșuează pentru el. Avertismentul de pe stderr este ascuns, iar if folosește codul de ieșire.

printf 'Ana,Iasi,450\n' > clienti.csv
printf 'Raport octombrie\n' > raport.txt
sha256sum clienti.csv raport.txt > sume.sha256
echo 'rand nou' >> raport.txt
if sha256sum -c sume.sha256 2>/dev/null; then
  echo "Toate fișierele sunt intacte"
else
  echo "Atenție: cel puțin un fișier s-a schimbat"
fi

Rezultat

clienti.csv: OK
raport.txt: FAILED
Atenție: cel puțin un fișier s-a schimbat

Exemplul 3: MD5 pentru o comparație rapidă

MD5 e scurt și suficient ca să vezi dacă două copii sunt identice, dar nu protejează împotriva modificărilor intenționate.

printf 'note: 9 10 8\n' > note-ana.txt
cp note-ana.txt copie.txt
md5sum note-ana.txt copie.txt

Rezultat

39aeafac32e0cf130966a3a7318ce4a5  note-ana.txt
39aeafac32e0cf130966a3a7318ce4a5  copie.txt

Greșeli frecvente

  • Compararea sumei „cu ochiul” doar pe primele caractere; folosește -c sau compară șirul întreg.
  • Verificarea unei imagini descărcate cu suma luată de pe același server compromis; pentru siguranță reală verifică și semnătura GPG a fișierului de sume.

Comenzi înrudite

  • openssl: Trusa în linie de comandă pentru hash-uri, chei, certificate TLS și verificarea certificatelor unui site.
  • diff: Compară două fișiere linie cu linie și evidențiază diferențele dintre ele.
  • tar: Împachetează mai multe fișiere într-o singură arhivă (tarball) și o comprimă opțional cu gzip sau bzip2.