Wyszukiwanie w witrynie

Dowiedz się, jak generować i weryfikować pliki za pomocą sumy kontrolnej MD5 w systemie Linux


Suma kontrolna to cyfra służąca jako suma poprawnych cyfr w danych, która może zostać później wykorzystana do wykrycia błędów w danych podczas przechowywania lub przesyłania. Sumy MD5 (Message Digest 5) mogą służyć jako suma kontrolna do weryfikacji plików lub ciągów znaków w systemie plików Linux.

Sumy MD5 to 128-bitowe ciągi znaków (cyfry i litery) powstałe w wyniku uruchomienia algorytmu MD5 dla określonego pliku. Algorytm MD5 to popularna funkcja skrótu, która generuje 128-bitowy skrót wiadomości nazywany wartością skrótu, a gdy wygenerujesz go dla konkretnego pliku, pozostaje on dokładnie niezmieniony na każdym komputerze, niezależnie od tego, ile razy został wygenerowany.

Zwykle bardzo trudno jest znaleźć dwa różne pliki, których wynikiem są te same ciągi znaków. Dlatego możesz użyć md5sum, aby sprawdzić integralność danych cyfrowych, ustalając, czy pobrany plik lub obraz ISO jest kopią bit po bicie zdalnego pliku lub obrazu ISO.

Sugerowana lektura: Postęp – monitoruj postęp poleceń (cp, mv, dd, tar itp.) w systemie Linux

W systemie Linux program md5sum oblicza i sprawdza wartości skrótu MD5 pliku. Jest składnikiem pakietu GNU Core Utilities, dlatego jest preinstalowany w większości, jeśli nie we wszystkich dystrybucjach Linuksa.

Przyjrzyj się zawartości pliku /etc/group zapisanego jako groups.cvs poniżej.

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,aaronkilik
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:aaronkilik
floppy:x:25:
tape:x:26:
sudo:x:27:aaronkilik
audio:x:29:pulse
dip:x:30:aaronkilik

Poniższe polecenie md5sums wygeneruje wartość skrótu dla pliku w następujący sposób:

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

Kiedy próbujesz zmienić zawartość pliku, usuwając pierwszą linię, root:x:0:, a następnie uruchamiasz polecenie po raz drugi, spróbuj zwrócić uwagę na wartość skrótu:

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

Zauważysz, że wartość skrótu uległa zmianie, co wskazuje, że zawartość pliku została zmieniona.

Teraz odłóż pierwszą linię pliku, root:x:0: i zmień jego nazwę na group_file.txt, a następnie uruchom poniższe polecenie, aby ponownie wygenerować wartość skrótu:

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

Z powyższych danych wynika, że wartość skrótu jest nadal taka sama, nawet jeśli nazwa pliku została zmieniona, z zachowaniem oryginalnej zawartości.

Ważne: sumy md5 weryfikują/działają tylko z zawartością pliku, a nie z nazwą pliku.

Plik groups_list.txt jest duplikatem pliku groups.csv, dlatego spróbuj jednocześnie wygenerować wartość skrótu plików w następujący sposób.

Zobaczysz, że oba mają równe wartości skrótu, dzieje się tak, ponieważ mają dokładnie tę samą treść.

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

Możesz przekierować wartości skrótu pliku(ów) do pliku tekstowego i przechowywać je, a także udostępniać je innym. W przypadku dwóch powyższych plików możesz wydać poniższe polecenie, aby przekierować wygenerowane wartości skrótu do pliku tekstowego do późniejszego wykorzystania:

md5sum groups_list.txt  groups.csv > myfiles.md5

Aby sprawdzić, czy pliki nie zostały zmodyfikowane od czasu utworzenia sumy kontrolnej, uruchom kolejne polecenie. Powinna być widoczna nazwa każdego pliku wraz z komunikatem „OK”.

Sugerowana lektura: Znajdź 15 procesów o największym zużyciu pamięci w systemie Linux

Opcja -c lub --check informuje komendę md5sums, aby odczytała sumy MD5 z plików i je sprawdziła.

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

Pamiętaj, że po utworzeniu sumy kontrolnej nie możesz zmienić nazw plików, w przeciwnym razie przy próbie sprawdzenia plików pod nowymi nazwami pojawi się błąd „Nie ma takiego pliku ani katalogu”.

Na przykład:

mv groups_list.txt new.txt
$ mv groups.csv file.txt
$ md5sum -c  myfiles.md5
md5sum: groups_list.txt: No such file or directory
groups_list.txt: FAILED open or read
md5sum: groups.csv: No such file or directory
groups.csv: FAILED open or read
md5sum: WARNING: 2 listed files could not be read

Koncepcja ta działa również w przypadku ciągów znaków, w poniższych poleceniach -n oznacza, że nie wyświetlaj końcowego znaku nowej linii:

echo -n "Tecmint How-Tos" | md5sum - 

afc7cb02baab440a6e64de1a5b0d0f1b  -
echo -n "Tecmint How-To" | md5sum - 

65136cb527bff5ed8615bd1959b0a248  -

W tym poradniku pokazałem jak wygenerować wartości skrótu dla plików, utworzyć sumę kontrolną w celu późniejszej weryfikacji integralności plików w systemie Linux. Chociaż wykryto luki w zabezpieczeniach algorytmu MD5, skróty MD5 nadal pozostają przydatne, zwłaszcza jeśli ufa się stronie, która je tworzy.

Weryfikacja plików jest zatem ważnym aspektem obsługi plików w systemach, aby uniknąć pobierania, przechowywania lub udostępniania uszkodzonych plików. Na koniec, jak zwykle, skontaktuj się z nami za pomocą poniższego formularza komentarza, aby uzyskać pomoc. Możesz także zgłosić kilka ważnych sugestii, jak ulepszyć ten post.