Как проверить суммы MD5 установленных пакетов в Debian / Ubuntu Linux

by itisgood

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

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

Учитывая это как важный фактор сохранения неповрежденных пакетов в вашей системе, важным является проверка файлов в файловой системе на информацию, хранящуюся в пакете.

Как проверить установленные пакеты Debian на контрольную сумму MD5

В системах Debian / Ubuntu вы можете использовать инструмент debsums для проверки сумм MD5 установленных пакетов.

Если вы хотите узнать информацию о пакете debsums перед ее установкой, вы можете использовать APT-CACHE следующим образом:

$ apt-cache search debsums

Затем установите его с помощью команды apt следующим образом:

$ sudo apt install debsums

Теперь пришло время узнать, как использовать инструмент debsums для проверки MD5sum установленных пакетов.

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

Кроме того, вывод команды debsums показывает расположение файла слева и результаты проверки справа.

Есть три возможных результата, которые вы можете получить: они включают:

  • OK – указывает, что сумма MD5 файла в норме
  • FAILED – показывает, что сумма MD5 файла не совпадает.
  • REPLACED – означает, что конкретный файл был заменен файлом из другого пакета.

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

$ sudo debsums
/usr/bin/a11y-profile-manager-indicator                                       OK
/usr/share/doc/a11y-profile-manager-indicator/copyright                       OK
/usr/share/man/man1/a11y-profile-manager-indicator.1.gz                       OK
/usr/share/accounts/providers/facebook.provider                               OK
/usr/share/accounts/qml-plugins/facebook/Main.qml                             OK
/usr/share/accounts/services/facebook-microblog.service                       OK
/usr/share/accounts/services/facebook-sharing.service                         OK
/usr/share/doc/account-plugin-facebook/copyright                              OK
/usr/share/accounts/providers/flickr.provider                                 OK
/usr/share/accounts/qml-plugins/flickr/Main.qml                               OK
/usr/share/accounts/services/flickr-microblog.service                         OK
/usr/share/accounts/services/flickr-sharing.service                           OK
/usr/share/doc/account-plugin-flickr/copyright                                OK
/usr/share/accounts/providers/google.provider                                 OK
/usr/share/accounts/qml-plugins/google/Main.qml                               OK
/usr/share/accounts/services/google-drive.service                             OK
/usr/share/accounts/services/google-im.service                                OK
/usr/share/accounts/services/picasa.service                                   OK
/usr/share/doc/account-plugin-google/copyright                                OK
/lib/systemd/system/accounts-daemon.service                                   OK
/usr/lib/accountsservice/accounts-daemon                                      OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml                OK
/usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml                     OK
/usr/share/dbus-1/system-services/org.freedesktop.Accounts.service            OK
/usr/share/doc/accountsservice/README                                         OK
/usr/share/doc/accountsservice/TODO                                           OK
....

Чтобы включить проверку каждого файла и файлов конфигурации для каждого пакета на любые изменения, включите опцию -a или -all:

$ sudo debsums --all
/usr/bin/a11y-profile-manager-indicator                                       OK
/usr/share/doc/a11y-profile-manager-indicator/copyright                       OK
/usr/share/man/man1/a11y-profile-manager-indicator.1.gz                       OK
/etc/xdg/autostart/a11y-profile-manager-indicator-autostart.desktop           OK
/usr/share/accounts/providers/facebook.provider                               OK
/usr/share/accounts/qml-plugins/facebook/Main.qml                             OK
/usr/share/accounts/services/facebook-microblog.service                       OK
/usr/share/accounts/services/facebook-sharing.service                         OK
/usr/share/doc/account-plugin-facebook/copyright                              OK
/etc/signon-ui/webkit-options.d/www.facebook.com.conf                         OK
/usr/share/accounts/providers/flickr.provider                                 OK
/usr/share/accounts/qml-plugins/flickr/Main.qml                               OK
/usr/share/accounts/services/flickr-microblog.service                         OK
/usr/share/accounts/services/flickr-sharing.service                           OK
/usr/share/doc/account-plugin-flickr/copyright                                OK
/etc/signon-ui/webkit-options.d/login.yahoo.com.conf                          OK
/usr/share/accounts/providers/google.provider                                 OK
/usr/share/accounts/qml-plugins/google/Main.qml                               OK
/usr/share/accounts/services/google-drive.service                             OK
/usr/share/accounts/services/google-im.service                                OK
/usr/share/accounts/services/picasa.service                                   OK
/usr/share/doc/account-plugin-google/copyright                                OK
...

Также возможно проверить только файл конфигурации, исключая все другие файлы пакета, с помощью опции -e или –config:

$ sudo debsums --config
/etc/xdg/autostart/a11y-profile-manager-indicator-autostart.desktop           OK
/etc/signon-ui/webkit-options.d/www.facebook.com.conf                         OK
/etc/signon-ui/webkit-options.d/login.yahoo.com.conf                          OK
/etc/signon-ui/webkit-options.d/accounts.google.com.conf                      OK
/etc/dbus-1/system.d/org.freedesktop.Accounts.conf                            OK
/etc/acpi/asus-keyboard-backlight.sh                                          OK
/etc/acpi/events/asus-keyboard-backlight-down                                 OK
/etc/acpi/ibm-wireless.sh                                                     OK
/etc/acpi/events/tosh-wireless                                                OK
/etc/acpi/asus-wireless.sh                                                    OK
/etc/acpi/events/lenovo-undock                                                OK
/etc/default/acpi-support                                                     OK
/etc/acpi/events/ibm-wireless                                                 OK
/etc/acpi/events/asus-wireless-on                                             OK
/etc/acpi/events/asus-wireless-off                                            OK
/etc/acpi/tosh-wireless.sh                                                    OK
/etc/acpi/events/asus-keyboard-backlight-up                                   OK
/etc/acpi/events/thinkpad-cmos                                                OK
/etc/acpi/undock.sh                                                           OK
/etc/acpi/events/powerbtn                                                     OK
/etc/acpi/powerbtn.sh                                                         OK
/etc/init.d/acpid                                                             OK
/etc/init/acpid.conf                                                          OK
/etc/default/acpid                                                            OK
...

Затем, чтобы отображать только измененные файлы в выводах debsums, используйте параметр -c или –changed.

Я не нашел в моей системе никаких измененных файлов.

$ sudo debsums --changed

Следующая команда выводит список файлов, которые не имеют информации md5sum, здесь мы используем параметр -l и -list-missing.

В моей системе команда не показала ни одного файла.

$ sudo debsums --list-missing

Теперь пришло время проверить сумму 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

Предполагая, что вы используете debsums как обычный пользователь без sudo, вы можете убрать из вывода ошибки прав в качестве предупреждений, используя параметр -ignore-permissions:

$ debsums --ignore-permissions 

 

 

You may also like

Leave a Comment