как проверить md5 сумму в linux
linux-notes.org
Как проверить целостность данных с помощью md5sum под GNU / Linux
В этой статье мы опишем, как вы можете проверить целостность данных, используя утилиту md5sum под управлением операционной системы GNU / Linux.
Что такое md5sum?
md5sum является инструментом для проверки целостности данных. Он рассчитывает и проверяет 128-битные хеши MD5, так что вы можете знать, если конкретный файл является битым. Например, давайте создадим резервную копию с использованием tar который будет содержать все конфигурационные данные с моей системы на VPS которые мы применяем в этом примере:
Затем с помощью инструмента md5sum для расчета хэш-значение для ‘for_test.tar.gz’ архива выполним команду:
Очистим ‘/etc/passwd’ извлеченный из архива :
Создадим из этого каталога архив ‘.tar.gz’:
Проверим целостность файла:
Так, таким образом, вы можете знать, если ваш архив резервных копий является действительным, и не битыми.
А что, если вы скачали образ Debian для дальнейшей установки например, и хотите, чтобы проверить его на сумму хэшей MD5, не знаете как? Вы можете использовать «-с» эта опция будет читать хэши из файла (ов) и будет проверять их. Таким образом, чтобы проверить это:
и вы должны получить:
debian-6-x86-x64.iso: OK
Если вам понравился этот пост, пожалуйста, поделитесь им с друзьями в социальных сетях с помощью кнопок, а на этом все, тема «Как проверить целостность данных с помощью md5sum под GNU / Linux» завершена.
Изучаем Linux приемы для создания контрольных сумм и проверки целостности данных
Контрольная сумма используется для проверки целостности файла.
Ее можно охарактеризовать как цифровой отпечаток файла.
Проверяя значение Checksum, мы можем определить целостность файла, когда он был перенесен из одного места в другое.
Контрольная сумма представляет собой длинную строку данных, содержащую различные буквы и цифры.
Все популярные веб-сайты программного обеспечения предоставляют значение контрольной суммы для загруженного файла, с помощью которого мы можем подтвердить наши данные, проверив значение контрольной суммы.
Генерирование контрольных сумм Linux
Контрольная сумма генерируется алгоритмом контрольной суммы.
Он генерирует значение контрольной суммы, беря файл в качестве ввода.
MD5 и SHA (Secure Hash Algorithms) – самые популярные алгоритмы, используемые для создания контрольных сумм
Инструменты командной строки для работы с контрольной суммой
Почти все дистрибутивы Linux предоставляют инструменты командной строки для различных алгоритмов контрольной суммы.
Вы можете сгенерировать и проверить контрольную сумму используя их.
Некоторые из стандартных инструментов командной строки, используемые в настоящее время, следующие:
Примеры
Давайте рассмотрим некоторые примеры использования этих инструментов командной строки для создания значений контрольной суммы.
Я создал один из тестовых файлов index.html.
Давайте сгенерируем значение контрольной суммы для этого файла, используя указанные выше средства.
md5sum:
MD5 – это алгоритм, который используется для проверки целостности данных посредством создания 128-битного дайджеста сообщений из ввода данных, который, как утверждается, является уникальным для этих конкретных данных вроде отпечатка пальца для конкретного человека.
Вы можете видеть мой файл, я сгенерировал значение контрольной суммы, соответствующее этому файлу, используя алгоритм MD5.
Проверка контрольной суммы Linux
В этой небольшой статье мы рассмотрим что такое контрольная сумма Linux, а также как выполнять проверку целостности файлов с помощью контрольных сумм md5.
Что такое MD5?
В Linux для подсчета контрольных сумм по алгоритму md5 используется утилита md5sum. Вы можете применять ее для проверки целостности загруженных из интернета iso образов или других файлов.
Эта утилита позволяет не только подсчитывать контрольные суммы linux, но и проверять соответствие. Она поставляется в качестве стандартной утилиты из набора GNU, поэтому вам не нужно ничего устанавливать.
Проверка контрольных сумм в Linux
Синтаксис команды md5sum очень прост:
$ md5sum опции файл
Опций всего несколько и, учитывая задачи утилиты, их вполне хватает:
Сначала скопируйте файл /etc/group в домашнюю папку чтобы на нем немного поэкспериментировать:
cp /etc/group groups
Например, давайте подсчитаем контрольную сумму для файла /etc/group:
Или вы можете сохранить сразу эту сумму в файл для последующей проверки:
md5sum groups > groups.md5
Затем каким-либо образом измените этот файл, например, удалите первую строчку и снова подсчитайте контрольные суммы:
Как видите, теперь значение отличается, а это значит, что содержимое файла тоже изменилось. Дальше верните обратно первую строчку root:x:0: и скопируйте этот файл в groups_list и
cp groups groups_list
Затем опять должна быть выполнена проверка контрольной суммы linux:
Сумма соответствует первому варианту, даже несмотря на то, что файл был переименован. Обратите внимание, что md5sum работает только с содержимым файлов, ее не интересует ни его имя, ни его атрибуты. Вы можете убедиться, что оба файла имеют одинаковые суммы:
md5sum groups groups_list
Вы можете перенаправить вывод этой команды в файл, чтобы потом иметь возможность проверить контрольные суммы:
md5sum groups groups_list > groups.md5
Чтобы проверить, не были ли файлы изменены с момента создания контрольной суммы используйте опцию -c или —check. Если все хорошо, то около каждого имени файла появится слово OK или ЦЕЛ:
Но теперь вы не можете переименовывать файлы, потому что при проверке утилита будет пытаться открыть их по имени и, естественно, вы получите ошибку. Точно так же все работает для строк:
Выводы
Из этой статьи вы узнали как выполняется получение и проверка контрольной суммы linux для файлов и строк. Хотя в алгоритме MD5 были обнаружены уязвимости, он все еще остается полезным, особенно если вы доверяете инструменту, который будет создавать хэши.
На завершение небольшое видео по теме:
Подсчитываем md5 (хеш-сумму) в Linux
Проверить MD5 (хеш-сумму) в Linux проще всего именно в терминале. Через какой-либо графический интерфейс необходимо будет сделать больше манипуляций, чем просто скомандовать в терминале Linux следующее:
Само собой разумеющееся путь до необходимого вам файла, (/home/pavel/Дистрибутивы/lubuntu-12.04-desktop-i386.iso) необходимо прописывать свой, тот который соответствует нужному объекту для подсчета MD5 суммы в Linux.
Команды в Linux являются стандартном для всех и значит, что команда md5sum подойдет для любого дистрибутива Linux, в котором бы вы не находились. Это и есть одно из достоинств командной строки.
После записи дистрибутива Linux на оптический диск нужно проверить целостность, узнать его MD5 сумму
Где /dev/sr0 это DVD-ROM, для уточнения имени вашего примонтированного оптического диска, в том случае если он у вас не один, можно найти по выводу этой команды:
Из имеющейся информации после ввода:
Будет иметься примерно следующее:
Для нас важны эти строчки:
Далее будем подставлять эти строки в следующую команду, которая нам сообщит MD5 сумму
Обратите внимание на три пункта, которые вы должны подставить свои:
После подсчета вы получите примерно следующее:
322e76e15cbe9ae4b964f3e6cbe49e37 — это и есть MD5 сумма диска. Если, она совпадает со значение указанном на сайте, где вы скачивали файл или с исходным файлом на компьютере, то значит, диск записался без ошибок. На практике бывает, что сумма MD5 часто не совпадает с суммой MD5 указанной на сайте из-за ошибок при чтении диска.
5 комментариев Подсчитываем md5 (хеш-сумму) в Linux
Для проверки записи диска нужно всего лишь дать команду:
$ md5sum /dev/hda
(если оптический диск определяется у вас hda, может определяться и по другому — узнайте с помощью mount).
Включится дисковод и через непродолжительное время получите ответ:
d790058a688150748e7a3b62477a3458 /dev/hda
И всё!
нет не усё!
если просто (md5sum /dev/hda или /dev/dvd) то hash посчитается вместе с служебной
информацией записаной на диск и вывод md5 hash будет не верным
правильно как написано в статье.
Большое спасибо. Замечательно доходчиво написано, даже для новичков, каковым я и являюсь.
а у меня на зпгрузочной флешке нет файла iso во всяком случае найти я егопока не смог. А вот на главном сайте Ubuntu предлагается «скачать файлы» SHA and SHA.pgp в какую-то «одну» директорию. Наверное им это ясно. Я рад за них. НО не за себя.
Приветствую! Спасибо за статью.
Попробовал два способа — самый первый в статье — md5sum /path/*.iso
Показывает одну сумму.
Как проверить суммы MD5 установленных пакетов в Debian / Ubuntu Linux
Вы когда-нибудь задумывались над тем, почему данный бинарный файл или пакет, установленные в вашей системе, не работают в соответствии с вашими ожиданиями, а это значит, что он работает неправильно, как это должно быть, возможно, это вообще не может начаться.
При загрузке пакетов вы можете столкнуться с проблемами нестационарных сетевых подключений или неожиданными отключениями электроэнергии, это может привести к установке поврежденного пакета.
Учитывая это как важный фактор сохранения неповрежденных пакетов в вашей системе, важным является проверка файлов в файловой системе на информацию, хранящуюся в пакете.
Как проверить установленные пакеты Debian на контрольную сумму MD5
В системах Debian / Ubuntu вы можете использовать инструмент debsums для проверки сумм MD5 установленных пакетов.
Если вы хотите узнать информацию о пакете debsums перед ее установкой, вы можете использовать APT-CACHE следующим образом:
Затем установите его с помощью команды apt следующим образом:
Теперь пришло время узнать, как использовать инструмент debsums для проверки MD5sum установленных пакетов.
Примечание. Я использовал sudo со всеми приведенными ниже командами, потому что определенные файлы могут не иметь прав на чтение для обычных пользователей.
Кроме того, вывод команды debsums показывает расположение файла слева и результаты проверки справа.
Есть три возможных результата, которые вы можете получить: они включают:
Когда вы запускаете его без каких-либо параметров, debsums проверяет каждый файл в вашей системе на файлы md5sum.
Я не нашел в моей системе никаких измененных файлов.
В моей системе команда не показала ни одного файла.
Теперь пришло время проверить сумму md5 одного пакета, указав его имя:
$ sudo debsums docker-ce
/lib/systemd/system/docker.service OK
/lib/systemd/system/docker.socket OK
/lib/udev/rules.d/80-docker-ce.rules OK
/usr/bin/docker OK
/usr/bin/docker-containerd OK
/usr/bin/docker-containerd-ctr OK
/usr/bin/docker-containerd-shim OK
/usr/bin/docker-init OK
/usr/bin/docker-proxy OK
/usr/bin/docker-runc OK
/usr/bin/dockerd OK
/usr/share/bash-completion/completions/docker OK
/usr/share/doc/docker-ce/README.md.gz OK
/usr/share/doc/docker-ce/changelog.Debian.gz OK
/usr/share/docker-ce/contrib/check-config.sh OK
/usr/share/docker-ce/contrib/desktop-integration/README.md OK
/usr/share/docker-ce/contrib/desktop-integration/chromium/Dockerfile OK
/usr/share/docker-ce/contrib/desktop-integration/gparted/Dockerfile OK
/usr/share/docker-ce/contrib/mkimage-alpine.sh OK
/usr/share/docker-ce/contrib/mkimage-arch-pacman.conf OK
/usr/share/docker-ce/contrib/mkimage-arch.sh OK
/usr/share/docker-ce/contrib/mkimage-archarm-pacman.conf OK
/usr/share/docker-ce/contrib/mkimage-busybox.sh OK
/usr/share/docker-ce/contrib/mkimage-crux.sh OK
/usr/share/docker-ce/contrib/mkimage-debootstrap.sh OK
/usr/share/docker-ce/contrib/mkimage-pld.sh OK
/usr/share/docker-ce/contrib/mkimage-rinse.sh OK
/usr/share/docker-ce/contrib/mkimage-yum.sh OK
/usr/share/docker-ce/contrib/mkimage.sh OK
/usr/share/docker-ce/contrib/mkimage/.febootstrap-minimize OK
/usr/share/docker-ce/contrib/mkimage/busybox-static OK
/usr/share/docker-ce/contrib/mkimage/debootstrap OK
/usr/share/docker-ce/contrib/mkimage/mageia-urpmi OK
/usr/share/docker-ce/contrib/mkimage/rinse OK
/usr/share/docker-ce/contrib/mkimage/solaris OK
/usr/share/docker-ce/contrib/nuke-graph-directory.sh OK
/usr/share/fish/vendor_completions.d/docker.fish OK
/usr/share/man/man1/docker-attach.1.gz OK
/usr/share/man/man1/docker-build.1.gz OK
/usr/share/man/man1/docker-checkpoint-create.1.gz OK
/usr/share/man/man1/docker-checkpoint-ls.1.gz OK
/usr/share/man/man1/docker-checkpoint-rm.1.gz OK
/usr/share/man/man1/docker-checkpoint.1.gz OK
/usr/share/man/man1/docker-commit.1.gz OK
/usr/share/man/man1/docker-container-attach.1.gz OK
/usr/share/man/man1/docker-container-commit.1.gz OK
/usr/share/man/man1/docker-container-cp.1.gz OK
/usr/share/man/man1/docker-container-create.1.gz OK
/usr/share/man/man1/docker-container-diff.1.gz OK
/usr/share/man/man1/docker-container-exec.1.gz OK
/usr/share/man/man1/docker-container-export.1.gz OK
/usr/share/man/man1/docker-container-inspect.1.gz OK
/usr/share/man/man1/docker-container-kill.1.gz OK
/usr/share/man/man1/docker-container-logs.1.gz OK
/usr/share/man/man1/docker-container-ls.1.gz OK
/usr/share/man/man1/docker-container-pause.1.gz OK
/usr/share/man/man1/docker-container-port.1.gz OK
/usr/share/man/man1/docker-container-prune.1.gz OK
/usr/share/man/man1/docker-container-rename.1.gz OK
/usr/share/man/man1/docker-container-restart.1.gz OK
/usr/share/man/man1/docker-container-rm.1.gz OK
/usr/share/man/man1/docker-container-run.1.gz OK
/usr/share/man/man1/docker-container-start.1.gz OK
/usr/share/man/man1/docker-container-stats.1.gz OK
/usr/share/man/man1/docker-container-stop.1.gz OK
/usr/share/man/man1/docker-container-top.1.gz OK
/usr/share/man/man1/docker-container-unpause.1.gz OK
/usr/share/man/man1/docker-container-update.1.gz OK
/usr/share/man/man1/docker-container-wait.1.gz OK
/usr/share/man/man1/docker-container.1.gz OK
/usr/share/man/man1/docker-cp.1.gz OK
/usr/share/man/man1/docker-create.1.gz OK
/usr/share/man/man1/docker-deploy.1.gz OK
/usr/share/man/man1/docker-diff.1.gz OK
/usr/share/man/man1/docker-events.1.gz OK
/usr/share/man/man1/docker-exec.1.gz OK
/usr/share/man/man1/docker-export.1.gz OK
/usr/share/man/man1/docker-history.1.gz OK
/usr/share/man/man1/docker-image-build.1.gz OK
/usr/share/man/man1/docker-image-history.1.gz OK
/usr/share/man/man1/docker-image-import.1.gz OK
/usr/share/man/man1/docker-image-inspect.1.gz OK
/usr/share/man/man1/docker-image-load.1.gz OK
/usr/share/man/man1/docker-image-ls.1.gz OK
/usr/share/man/man1/docker-image-prune.1.gz OK
/usr/share/man/man1/docker-image-pull.1.gz OK
/usr/share/man/man1/docker-image-push.1.gz OK
/usr/share/man/man1/docker-image-rm.1.gz OK
/usr/share/man/man1/docker-image-save.1.gz OK
/usr/share/man/man1/docker-image-tag.1.gz OK
/usr/share/man/man1/docker-image.1.gz OK
/usr/share/man/man1/docker-images.1.gz OK
/usr/share/man/man1/docker-import.1.gz OK
/usr/share/man/man1/docker-info.1.gz OK
/usr/share/man/man1/docker-inspect.1.gz OK
/usr/share/man/man1/docker-kill.1.gz OK
/usr/share/man/man1/docker-load.1.gz OK
/usr/share/man/man1/docker-login.1.gz OK
/usr/share/man/man1/docker-logout.1.gz OK
/usr/share/man/man1/docker-logs.1.gz OK
/usr/share/man/man1/docker-network-connect.1.gz OK
/usr/share/man/man1/docker-network-create.1.gz OK
/usr/share/man/man1/docker-network-disconnect.1.gz OK
/usr/share/man/man1/docker-network-inspect.1.gz OK
/usr/share/man/man1/docker-network-ls.1.gz OK
/usr/share/man/man1/docker-network-prune.1.gz OK
/usr/share/man/man1/docker-network-rm.1.gz OK
/usr/share/man/man1/docker-network.1.gz OK
/usr/share/man/man1/docker-node-demote.1.gz OK
/usr/share/man/man1/docker-node-inspect.1.gz OK
/usr/share/man/man1/docker-node-ls.1.gz OK
/usr/share/man/man1/docker-node-promote.1.gz OK
/usr/share/man/man1/docker-node-ps.1.gz OK
/usr/share/man/man1/docker-node-rm.1.gz OK
/usr/share/man/man1/docker-node-update.1.gz OK
/usr/share/man/man1/docker-node.1.gz OK
/usr/share/man/man1/docker-pause.1.gz OK
/usr/share/man/man1/docker-plugin-create.1.gz OK
/usr/share/man/man1/docker-plugin-disable.1.gz OK
/usr/share/man/man1/docker-plugin-enable.1.gz OK
/usr/share/man/man1/docker-plugin-inspect.1.gz OK
/usr/share/man/man1/docker-plugin-install.1.gz OK
/usr/share/man/man1/docker-plugin-ls.1.gz OK
/usr/share/man/man1/docker-plugin-push.1.gz OK
/usr/share/man/man1/docker-plugin-rm.1.gz OK
/usr/share/man/man1/docker-plugin-set.1.gz OK
/usr/share/man/man1/docker-plugin-upgrade.1.gz OK
/usr/share/man/man1/docker-plugin.1.gz OK
/usr/share/man/man1/docker-port.1.gz OK
/usr/share/man/man1/docker-ps.1.gz OK
/usr/share/man/man1/docker-pull.1.gz OK
/usr/share/man/man1/docker-push.1.gz OK
/usr/share/man/man1/docker-rename.1.gz OK
/usr/share/man/man1/docker-restart.1.gz OK
/usr/share/man/man1/docker-rm.1.gz OK
/usr/share/man/man1/docker-rmi.1.gz OK
/usr/share/man/man1/docker-run.1.gz OK
/usr/share/man/man1/docker-save.1.gz OK
/usr/share/man/man1/docker-search.1.gz OK
/usr/share/man/man1/docker-secret-create.1.gz OK
/usr/share/man/man1/docker-secret-inspect.1.gz OK
/usr/share/man/man1/docker-secret-ls.1.gz OK
/usr/share/man/man1/docker-secret-rm.1.gz OK
/usr/share/man/man1/docker-secret.1.gz OK
/usr/share/man/man1/docker-service-create.1.gz OK
/usr/share/man/man1/docker-service-inspect.1.gz OK
/usr/share/man/man1/docker-service-logs.1.gz OK
/usr/share/man/man1/docker-service-ls.1.gz OK
/usr/share/man/man1/docker-service-ps.1.gz OK
/usr/share/man/man1/docker-service-rm.1.gz OK
/usr/share/man/man1/docker-service-scale.1.gz OK
/usr/share/man/man1/docker-service-update.1.gz OK
/usr/share/man/man1/docker-service.1.gz OK
/usr/share/man/man1/docker-stack-deploy.1.gz OK
/usr/share/man/man1/docker-stack-ls.1.gz OK
/usr/share/man/man1/docker-stack-ps.1.gz OK
/usr/share/man/man1/docker-stack-rm.1.gz OK
/usr/share/man/man1/docker-stack-services.1.gz OK
/usr/share/man/man1/docker-stack.1.gz OK
/usr/share/man/man1/docker-start.1.gz OK
/usr/share/man/man1/docker-stats.1.gz OK
/usr/share/man/man1/docker-stop.1.gz OK
/usr/share/man/man1/docker-swarm-init.1.gz OK
/usr/share/man/man1/docker-swarm-join-token.1.gz OK
/usr/share/man/man1/docker-swarm-join.1.gz OK
/usr/share/man/man1/docker-swarm-leave.1.gz OK
/usr/share/man/man1/docker-swarm-unlock-key.1.gz OK
/usr/share/man/man1/docker-swarm-unlock.1.gz OK
/usr/share/man/man1/docker-swarm-update.1.gz OK
/usr/share/man/man1/docker-swarm.1.gz OK
/usr/share/man/man1/docker-system-df.1.gz OK
/usr/share/man/man1/docker-system-events.1.gz OK
/usr/share/man/man1/docker-system-info.1.gz OK
/usr/share/man/man1/docker-system-prune.1.gz OK
/usr/share/man/man1/docker-system.1.gz OK
/usr/share/man/man1/docker-tag.1.gz OK
/usr/share/man/man1/docker-top.1.gz OK
/usr/share/man/man1/docker-unpause.1.gz OK
/usr/share/man/man1/docker-update.1.gz OK
/usr/share/man/man1/docker-version.1.gz OK
/usr/share/man/man1/docker-volume-create.1.gz OK
/usr/share/man/man1/docker-volume-inspect.1.gz OK
/usr/share/man/man1/docker-volume-ls.1.gz OK
/usr/share/man/man1/docker-volume-prune.1.gz OK
/usr/share/man/man1/docker-volume-rm.1.gz OK
/usr/share/man/man1/docker-volume.1.gz OK
/usr/share/man/man1/docker-wait.1.gz OK
/usr/share/man/man1/docker.1.gz OK
/usr/share/man/man5/Dockerfile.5.gz OK
/usr/share/man/man5/docker-config-json.5.gz OK
/usr/share/man/man8/dockerd.8.gz OK
/usr/share/nano/Dockerfile.nanorc OK
/usr/share/zsh/vendor-completions/_docker OK