Hvordan sjekke MD5-summer av installerte pakker i Debian/Ubuntu Linux


Har du noen gang lurt på hvorfor en gitt binær eller pakke installert på systemet ditt ikke fungerer i henhold til dine forventninger, noe som betyr at den ikke fungerer som den skal, kanskje den ikke kan starte i det hele tatt.

Mens du laster ned pakker, kan du møte utfordringer med ustabile nettverkstilkoblinger eller uventede strømbrudd, dette kan føre til installasjon av ødelagt pakke.

Tatt i betraktning dette som en viktig faktor for å opprettholde ukorrupte pakker på systemet ditt, er det derfor et viktig skritt å verifisere filene på filsystemet mot informasjonen som er lagret i pakken ved å bruke følgende artikkel.

Hvordan verifisere installerte Debian-pakker mot MD5-sjekksummer

På Debian/Ubuntu-systemer kan du bruke debsums-verktøyet for å sjekke MD5-summene for installerte pakker. Hvis du vil vite informasjonen om debsums-pakken før du installerer den, kan du bruke APT-CACHE slik:

$ apt-cache search debsums

Deretter installerer du den ved å bruke apt-kommandoen som følger:

$ sudo apt install debsums

Nå er det på tide å lære hvordan du bruker debsums-verktøyet for å verifisere MD5sum av installerte pakker.

Merk: Jeg har brukt sudo med alle kommandoene nedenfor fordi enkelte filer kanskje ikke har leserettigheter for vanlige brukere.

I tillegg viser utdataene fra debsums-kommandoen deg filplasseringen til venstre og kontrollresultatene til høyre. Det er tre mulige resultater du kan få, de inkluderer:

  1. OK – indikerer at en fils MD5-sum er god.
  2. FEILEDES – viser at en fils MD5-sum ikke stemmer overens.
  3. ERSTATTET – betyr at den spesifikke filen har blitt erstattet av en fil fra en annen pakke.

Når du kjører det uten noen alternativer, sjekker debsums hver fil på systemet ditt mot md5sum-filene.

$ 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 å aktivere kontroll av hver fil og konfigurasjonsfiler for hver pakke for eventuelle endringer, inkluderer du alternativet -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 også mulig å sjekke kun konfigurasjonsfilen unntatt alle andre pakkefiler ved å bruke -e eller --config alternativet:

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

Deretter, for å kun vise endrede filer i utdataene til debsums, bruk -c eller --changed alternativet. Jeg fant ingen endrede filer i systemet mitt.

$ sudo debsums --changed

Den neste kommandoen skriver ut filer som ikke har md5sum info, her bruker vi alternativene -l og --list-missing. På systemet mitt viser ikke kommandoen noen fil.

$ sudo debsums --list-missing

Nå er det på tide å bekrefte md5-summen til en enkelt pakke ved å spesifisere navnet:

$ 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

Forutsatt at du kjører debsums som en vanlig bruker uten sudo, kan du behandle tillatelsesfeil som advarsler ved å bruke --ignore-permissions-alternativet:

$ debsums --ignore-permissions 

Hvordan generere MD5-summer fra .Deb-filer

Alternativet -g forteller debsums å generere MD5-summer fra deb-innhold, der:

  1. mangler – instruer debsums å generere MD5-summer fra deb for pakker som ikke gir en.
  2. alle – instruerer debsums til å ignorere summene på disken og bruke den som finnes i deb-filen, eller generert fra den hvis ingen eksisterer.
  3. keep – ber debsums skrive de utpakkede/genererte summene til filen /var/lib/dpkg/info/package.md5sums.
  4. nocheck – betyr at de utpakkede/genererte summene ikke sjekkes mot den installerte pakken.

Når du ser på innholdet i katalogen /var/lib/dpkg/info/, vil du se md5sums for forskjellige filer som pakker som i bildet 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 å bruke -g-alternativet er det samme som --generate=missing, du kan prøve å generere en md5-sum for apache2-pakken ved å kjøre følgende kommando.

$ sudo debsums --generate=missing apache2 

Siden apache2-pakken på systemet mitt allerede har md5-summer, vil den vise utdataene nedenfor, som er det samme som å kjøre:

$ sudo debsums apache2

For flere interessante alternativer og bruksinformasjon, se gjennom man-siden for debsums.

$ man debsums

I denne artikkelen delte vi hvordan du verifiserer installerte Debian/Ubuntu-pakker mot MD5-sjekksummer, dette kan være nyttig for å unngå å installere og kjøre ødelagte binærfiler eller pakkefiler på systemet ditt ved å sjekke filene på filsystemet mot informasjonen som er lagret i pakken.

For spørsmål eller tilbakemeldinger, dra nytte av kommentarskjemaet nedenfor. Tenk, du kan like godt gi ett eller to forslag for å gjøre dette innlegget bedre.