Ricerca nel sito web

Come controllare le somme MD5 dei pacchetti installati in Debian/Ubuntu Linux


Ti sei mai chiesto perché un dato binario o pacchetto installato sul tuo sistema non funziona secondo le tue aspettative, nel senso che non funziona correttamente come dovrebbe, forse non può nemmeno avviarsi.

Durante il download dei pacchetti, potresti dover affrontare problemi di connessioni di rete instabili o blackout di corrente imprevisti, ciò può comportare l'installazione di pacchetti danneggiati.

Considerando questo come un fattore importante per mantenere i pacchetti incorrotti sul sistema, è quindi un passaggio fondamentale verificare i file sul file system rispetto alle informazioni archiviate nel pacchetto utilizzando il seguente articolo.

Lettura consigliata: scopri come generare e verificare file con checksum MD5 in Linux

Come verificare i pacchetti Debian installati rispetto ai checksum MD5

Sui sistemi Debian/Ubuntu, puoi utilizzare lo strumento debsums per controllare le somme MD5 dei pacchetti installati. Se vuoi conoscere le informazioni sul pacchetto debsums prima di installarlo, puoi utilizzare APT-CACHE in questo modo:

apt-cache search debsums

Successivamente, installalo utilizzando il comando apt come segue:

sudo apt install debsums

Ora è il momento di imparare come utilizzare lo strumento debsums per verificare MD5sum dei pacchetti installati.

Nota: ho utilizzato sudo con tutti i comandi seguenti perché alcuni file potrebbero non avere autorizzazioni di lettura per gli utenti normali.

Inoltre, l'output del comando debsums mostra la posizione del file a sinistra e i risultati del controllo a destra. Ci sono tre possibili risultati che puoi ottenere, includono:

  1. OK: indica che la somma MD5 di un file è buona.
  2. FAILED: mostra che la somma MD5 di un file non corrisponde.
  3. REPLACED: significa che il file specifico è stato sostituito da un file di un altro pacchetto.

Quando lo esegui senza alcuna opzione, debsums controlla ogni file sul tuo sistema confrontandolo con i file md5sum stock.

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

Per abilitare il controllo di ogni file e file di configurazione per ogni pacchetto per eventuali modifiche, includi l'opzione -a o --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
...

È anche possibile controllare solo il file di configurazione escludendo tutti gli altri file del pacchetto utilizzando l'opzione -e o --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
...

Successivamente, per visualizzare solo i file modificati nell'output dei debsum, utilizzare l'opzione -c o --changed. Non ho trovato alcun file modificato nel mio sistema.

sudo debsums --changed

Il comando successivo stampa i file che non hanno informazioni md5sum, qui usiamo l'opzione -l e --list-missing. Sul mio sistema, il comando non mostra alcun file.

sudo debsums --list-missing

Ora è il momento di verificare la somma md5 di un singolo pacchetto specificandone il nome:

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

Supponendo che tu stia eseguendo debsum come utente normale senza sudo, puoi trattare gli errori di autorizzazione come avvisi utilizzando l'opzione --ignore-permissions :

debsums --ignore-permissions 

Come generare somme MD5 da file .Deb

L'opzione -g dice a debsum di generare somme MD5 dai contenuti deb, dove:

  1. mancante: istruisce i debsum a generare somme MD5 dal deb per i pacchetti che non ne forniscono uno.
  2. all – ordina ai debsum di ignorare le somme su disco e di utilizzare quella presente nel file deb o generata da esso se non ne esiste nessuno.
  3. keep – dice a debsums di scrivere le somme estratte/generate nel file /var/lib/dpkg/info/package.md5sums.
  4. nocheck – significa che le somme estratte/generate non vengono confrontate con il pacchetto installato.

Quando guardi il contenuto della directory /var/lib/dpkg/info/, vedrai md5sums per vari file che vengono pacchettizzati come nell'immagine seguente:

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

Ricorda che usare l'opzione -g è uguale a --generate=missing, puoi provare a generare una somma md5 per il pacchetto apache2 eseguendo il seguente comando.

sudo debsums --generate=missing apache2 

Poiché il pacchetto apache2 sul mio sistema ha già somme md5, mostrerà l'output seguente, che è lo stesso dell'esecuzione:

sudo debsums apache2

Per opzioni più interessanti e informazioni sull'utilizzo, consulta la pagina man debsums.

man debsums

In questo articolo, abbiamo condiviso come verificare i pacchetti Debian/Ubuntu installati rispetto ai checksum MD5, questo può essere utile per evitare di installare ed eseguire file binari o file di pacchetto corrotti sul tuo sistema controllando i file sul file system rispetto alle informazioni archiviate nel pacchetto.

Per qualsiasi domanda o feedback, approfitta del modulo commenti qui sotto. Immaginabilmente, puoi anche offrire uno o due suggerimenti per migliorare questo post.