Sådan kontrolleres MD5-summer af installerede pakker i Debian/Ubuntu Linux


Har du nogensinde spekuleret over, hvorfor en given binær eller pakke, der er installeret på dit system, ikke fungerer efter dine forventninger, hvilket betyder, at den ikke fungerer korrekt, som den skal, måske kan den slet ikke starte begivenheden.

Under download af pakker kan du blive udsat for udfordringer med ustabile netværksforbindelser eller uventede strømafbrydelser, hvilket kan resultere i installation af beskadiget pakke.

I betragtning af dette som en vigtig faktor i vedligeholdelsen af ukorrupte pakker på dit system er det derfor et vigtigt skridt at verificere filerne på filsystemet mod de oplysninger, der er gemt i pakken ved hjælp af følgende artikel.

Sådan verificeres installerede Debian-pakker mod MD5-kontrolsummer

På Debian/Ubuntu-systemer kan du bruge debsums-værktøjet til at kontrollere MD5-summen af installerede pakker. Hvis du vil vide oplysningerne om debsums-pakken, inden du installerer den, kan du bruge APT-CACHE sådan:

$ apt-cache search debsums

Installer det derefter ved hjælp af apt-kommandoen som følger:

$ sudo apt install debsums

Nu er det tid til at lære at bruge debsums-værktøj til at verificere MD5sum af installerede pakker.

Bemærk: Jeg har brugt sudo med alle nedenstående kommandoer, fordi visse filer muligvis ikke har læsetilladelser for almindelige brugere.

Derudover viser output fra kommandoen debsums dig filplaceringen til venstre og kontrolresultaterne til højre. Der er tre mulige resultater, du kan få, de inkluderer:

  1. OK - angiver, at en fils MD5-sum er god.
  2. FAILED - viser, at en fils MD5-sum ikke stemmer overens.
  3. UDSKIFTET - betyder, at den specifikke fil er blevet erstattet af en fil fra en anden pakke.

Når du kører det uden nogen indstillinger, kontrollerer debsums hver fil på dit system mod stock md5sum-filerne.

$ 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
....

For at aktivere kontrol af hver fil og konfigurationsfiler for hver pakke for eventuelle ændringer, skal du medtage indstillingen -a eller --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
...

Det er så godt muligt kun at kontrollere konfigurationsfilen eksklusive alle andre pakkefiler ved hjælp af indstillingen -e eller --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
...

Brug derefter indstillingen -c eller --changed til kun at få vist ændrede filer i output fra debsums. Jeg fandt ingen ændrede filer i mit system.

$ sudo debsums --changed

Den næste kommando udskriver filer, der ikke har md5sum info, her bruger vi indstillingen -l og --list-missing . På mit system viser kommandoen ingen filer.

$ sudo debsums --list-missing

Nu er det tid til at verificere md5-summen af en enkelt pakke ved at angive dens navn:

$ sudo debsums apache2 
/lib/systemd/system/apache2.service.d/apache2-systemd.conf                    OK
/usr/sbin/a2enmod                                                             OK
/usr/sbin/a2query                                                             OK
/usr/sbin/apache2ctl                                                          OK
/usr/share/apache2/apache2-maintscript-helper                                 OK
/usr/share/apache2/ask-for-passphrase                                         OK
/usr/share/bash-completion/completions/a2enmod                                OK
/usr/share/doc/apache2/NEWS.Debian.gz                                         OK
/usr/share/doc/apache2/PACKAGING.gz                                           OK
/usr/share/doc/apache2/README.Debian.gz                                       OK
/usr/share/doc/apache2/README.backtrace                                       OK
/usr/share/doc/apache2/README.multiple-instances                              OK
/usr/share/doc/apache2/copyright                                              OK
/usr/share/doc/apache2/examples/apache2.monit                                 OK
/usr/share/doc/apache2/examples/secondary-init-script                         OK
/usr/share/doc/apache2/examples/setup-instance                                OK
/usr/share/lintian/overrides/apache2                                          OK
/usr/share/man/man1/a2query.1.gz                                              OK
/usr/share/man/man8/a2enconf.8.gz                                             OK
/usr/share/man/man8/a2enmod.8.gz                                              OK
/usr/share/man/man8/a2ensite.8.gz                                             OK
/usr/share/man/man8/apache2ctl.8.gz                                           OK

Forudsat at du kører debsums som en almindelig bruger uden sudo, kan du behandle tilladelsesfejl som advarsler ved at bruge indstillingen --ignore-permissions :

$ debsums --ignore-permissions 

Sådan genereres MD5-summer fra .Deb-filer

Indstillingen -g fortæller debsums at generere MD5-summer fra deb-indhold, hvor:

  1. mangler - instruer debsums om at generere MD5-summer fra deb for pakker, der ikke leverer en.
  2. alle - dirigerer debsums til at ignorere diskdosummerne og bruge den, der er til stede i deb-filen, eller genereres ud fra den, hvis der ikke findes nogen.
  3. keep - beder debsums om at skrive de ekstraherede/genererede summer til /var/lib/dpkg/info/package.md5sums-filen.
  4. nocheck - betyder, at de udpakkede/genererede summer ikke kontrolleres i forhold til den installerede pakke.

Når du ser på indholdet af kataloget /var/lib/dpkg/info/, vil du se md5sums for forskellige filer, der pakker som i billedet nedenfor:

$ cd /var/lib/dpkg/info
$ ls *.md5sums
a11y-profile-manager-indicator.md5sums
account-plugin-facebook.md5sums
account-plugin-flickr.md5sums
account-plugin-google.md5sums
accountsservice.md5sums
acl.md5sums
acpid.md5sums
acpi-support.md5sums
activity-log-manager.md5sums
adduser.md5sums
adium-theme-ubuntu.md5sums
adwaita-icon-theme.md5sums
aisleriot.md5sums
alsa-base.md5sums
alsa-utils.md5sums
anacron.md5sums
apache2-bin.md5sums
apache2-data.md5sums
apache2.md5sums
apache2-utils.md5sums
apg.md5sums
apparmor.md5sums
app-install-data.md5sums
app-install-data-partner.md5sums
...

Husk, at brug af -g er den samme som --generate = mangler , du kan prøve at generere en md5-sum til apache2-pakke ved at køre følgende kommando.

$ sudo debsums --generate=missing apache2 

Da apache2-pakken på mit system allerede har md5-summer, viser den output nedenfor, hvilket er det samme som at køre:

$ sudo debsums apache2

For mere interessante muligheder og brugsinfo, se gennem debsums mandesiden.

$ man debsums

I denne artikel delte vi, hvordan vi kontrollerer installerede Debian/Ubuntu-pakker mod MD5-kontrolsummer, dette kan være nyttigt for at undgå installation og udførelse af beskadigede binære filer eller pakkefiler på dit system ved at kontrollere filerne på filsystemet mod de oplysninger, der er gemt i pakken.

Hvis du har spørgsmål eller feedback, kan du benytte nedenstående kommentarformular. Det kan forestilles, at du lige så godt kan tilbyde et eller to forslag for at gøre dette indlæg bedre.