Поиск по сайту:

Узнайте, как создавать и проверять файлы с помощью контрольной суммы MD5 в Linux


Контрольная сумма — это цифра, представляющая собой сумму правильных цифр данных, которую можно использовать позже для обнаружения ошибок в данных во время хранения или передачи. Суммы MD5 (Message Digest 5) можно использовать в качестве контрольной суммы для проверки файлов или строк в файловой системе Linux.

Суммы MD5 — это 128-битные строки символов (цифры и буквы), полученные в результате применения алгоритма MD5 к определенному файлу. Алгоритм MD5 — это популярная хеш-функция, которая генерирует 128-битный дайджест сообщения, называемый хеш-значением, и когда вы генерируете его для определенного файла, он остается неизменным на любой машине, независимо от того, сколько раз он генерируется.

Обычно очень сложно найти два разных файла, в которых содержатся одинаковые строки. Таким образом, вы можете использовать md5sum для проверки целостности цифровых данных, определив, что загруженный вами файл или ISO является побитовой копией удаленного файла или ISO.

Рекомендуется к прочтению: Ход выполнения — отслеживание хода выполнения команд (cp, mv, dd, tar и т. д.) в Linux

В Linux программа md5sum вычисляет и проверяет хэш-значения MD5 файла. Он является частью пакета GNU Core Utilities и поэтому предустановлен в большинстве, если не во всех, дистрибутивах Linux.

Взгляните на содержимое /etc/group, сохраненное как groups.cvs ниже.

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

Приведенная ниже команда md5sums сгенерирует хеш-значение для файла следующим образом:

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

Когда вы попытаетесь изменить содержимое файла, удалив первую строку root:x:0:, а затем запустите команду во второй раз, попробуйте проанализировать значение хеш-функции:

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

Вы заметите, что значение хеш-функции теперь изменилось, что указывает на то, что содержимое файла изменилось.

Теперь верните первую строку файла, root:x:0:, переименуйте ее в group_file.txt и запустите команду ниже, чтобы снова сгенерировать его хеш-значение:

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

Судя по приведенным выше выводам, значение хеш-функции остается тем же, даже если файл был переименован, с его исходным содержимым.

Важно: суммы md5 проверяют/работают только с содержимым файла, а не с именем файла.

Файл groups_list.txt является дубликатом файла groups.csv, поэтому попробуйте сгенерировать хеш-значения файлов одновременно следующим образом.

Вы увидите, что они оба имеют одинаковые значения хеш-функции, потому что они имеют одинаковое содержимое.

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

Вы можете перенаправить хеш-значения файлов в текстовый файл и сохранить их, а также поделиться ими с другими. Для двух файлов выше вы можете ввести команду ниже, чтобы перенаправить сгенерированные значения хеш-функции в текстовый файл для дальнейшего использования:

md5sum groups_list.txt  groups.csv > myfiles.md5

Чтобы убедиться, что файлы не были изменены с момента создания контрольной суммы, выполните следующую команду. Вы сможете просмотреть имя каждого файла вместе с «ОК».

Рекомендуется к прочтению: Найдите 15 процессов с наибольшим использованием памяти в Linux

Опция -c или --check указывает команде md5sums прочитать суммы MD5 из файлов и проверить их.

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

Помните, что после создания контрольной суммы вы не можете переименовывать файлы, иначе вы получите ошибку «Нет такого файла или каталога» при попытке проверить файлы с новыми именами.

Например:

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

Эта концепция также работает для строк: в приведенных ниже командах -n означает, что завершающий символ новой строки не выводится:

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

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

65136cb527bff5ed8615bd1959b0a248  -

В этом руководстве я показал вам, как генерировать хеш-значения для файлов, создавать контрольную сумму для последующей проверки целостности файлов в Linux. Хотя уязвимости безопасности в алгоритме MD5 были обнаружены, хеши MD5 по-прежнему остаются полезными, особенно если вы доверяете стороне, которая их создает.

Поэтому проверка файлов является важным аспектом обработки файлов в ваших системах, позволяющим избежать загрузки, хранения или совместного использования поврежденных файлов. И последнее, но не менее важное: как обычно, свяжитесь с нами через форму комментариев ниже, чтобы обратиться за помощью, вы также можете внести несколько важных предложений по улучшению этого поста.