installierte Pakete mit debsums verifizieren

Veröffentlicht: Mai 23, 2015 in Debian
Schlagwörter:, ,

debian-logoEin Programm verhält sich nicht so wie es sich verhalten soll? Die Ursache für fehlerhafte Pakete können vielfältig sein: Stromausfälle, instabile Netzwerkverbindungen oder Angreifer. Mit dem Kommando debsums können die Checksummen von Dateien überprüft werden, die über Debian-Pakete auf dem System installiert wurden.

Mit debsums kann der Admin Veränderungen an Dateien im System feststellen. Diese Veränderungen können im Falle von Konfigurationsdateien natürlich gewollt sein, aber es gibt auch eine Vielzahl von Möglichkeiten in denen Veränderungen ungewollt hervorgerufen werden. Somit kann es hilfreich installierte Pakete gegen ihre MD5-Prüfsummen zu checken. Bei der Arbeit bedient sich debsums dafür diverser Prüfsummenlisten, welche unter /var/lib/dpkg/info/*.md5sums liegen.

cat /var/lib/dpkg/info/xterm.md5sums
09487426755285ceeca46c8b6d5a107b  usr/bin/koi8rxterm
bd51c5a10a1198acdc7aebe79f7050f7  usr/bin/lxterm
104b9e31f4178307e90bc7bf33485bb1  usr/bin/resize
9302ba8a99c2460fae59f88d4039edb6  usr/bin/uxterm
7adb12b6106295aff9d0e82fab3f9cbd  usr/bin/xterm
14eaa9cdb5cc2615550213f3fa58a2d5  usr/share/applications/debian-uxterm.desktop
76db9491fa42c58bb16fb02b803b1b41  usr/share/applications/debian-xterm.desktop

Aufruf

debsums [Optionen] [Paket]

An dieser Stelle sollen nur einige wichtige Optionen aufgelistet werden, eine vollständige Liste gibt es in der Man-Page. Da der Output von debsums extrem lang ist (auf meinem PC werden über 100000 Files geprüft), sollte man debsums nur mit Optionen starten, außer man leitet den Output um.

Option Bedeutung
-a checke alle Files, inklusive Konfigurationsdateien (werden per default ausgelassen)
-e prüfe nur Konfigurationsdateien
-c zeige nur geänderte Dateien, Output nach stdout
-l Pakete auflisten die keine MD5-Prüfsummendatei haben
-s nur Fehler berichten

Anmerkung: Die meisten Operationen können auch ohne Root-Rechte ausgeführt werden. Sollte dem User die Berechtigung für den Zugriff auf ein File fehlen gibt es eine entsprechende Fehlermeldung: debsums: can’t open xxx file /pfadangabe (Permission denied)

Startet man debsums ohne Optionen prüft es jede bekannte File, außer Konfigurationsdateien. Dabei kann der Output zur späteren Analyse in ein File umgeleitet werden. Sofern die Prüfsumme des Files ok ist kennzeichnet dies debsums auf der rechten Seite durch OK. Andere Meldungen sind:

  • md5sums missing – es ist keine Checksumme vorhanden
  • REPLACED – die Checksumme stimmt nicht überein

Möchte man den Output in ein File umleiten, sollte man sowohl stdout als stderr umlenken.

debsums &> /tmp/foo

Sollte einmal ein Paket keine Prüfsumme besitzen (debsums: no md5sums for dhcp3-client), kann man diese mit einem einfachen Shellskript erstellen (PAKETNAME bitte mit dem Namen des Pakets ersetzen:

for file in `dpkg -L PAKETNAME | grep ^/`; do test -f "$file" && md5sum "$file"; done > /var/lib/dpkg/info/PAKETNAME.md5sums
Wie finde ich heraus zu welchem Paket ein fehlerhaftes File gehört?

An dieser Stelle hilft dpkg –search FILE weiter:

dpkg --search /usr/lib/perl5/DateTime.pm
libdatetime-perl: /usr/lib/perl5/DateTime.pm

In diesem Beispiel prüfen wir das File: DateTime.pm und sehen das es zum Paket libdatetime-perl gehört.

 

Vorsicht vor der Man-Page:
apt-get install –reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Installiert Pakete mit geänderten Dateien erneut.

Um die unnötige Installation von Paketen zu vermeiden sollte man erst sämtliche Fehler, wie fehlende MD5-Summen, beheben, da auch diese Pakete neu installiert werden.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s