Вы когда-нибудь задумывались над тем, почему данный бинарный файл или пакет, установленные в вашей системе, не работают в соответствии с вашими ожиданиями, а это значит, что он работает неправильно, как это должно быть, возможно, это вообще не может начаться.
При загрузке пакетов вы можете столкнуться с проблемами нестационарных сетевых подключений или неожиданными отключениями электроэнергии, это может привести к установке поврежденного пакета.
Учитывая это как важный фактор сохранения неповрежденных пакетов в вашей системе, важным является проверка файлов в файловой системе на информацию, хранящуюся в пакете.
Как проверить установленные пакеты 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