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:
- OK: indica che la somma MD5 di un file è buona.
- FAILED: mostra che la somma MD5 di un file non corrisponde.
- 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:
- mancante: istruisce i debsum a generare somme MD5 dal deb per i pacchetti che non ne forniscono uno.
- 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.
- keep – dice a debsums di scrivere le somme estratte/generate nel file /var/lib/dpkg/info/package.md5sums.
- 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.