27
August
2024
17:23

So überprüfen Sie die Integrität des Linux-Betriebssystems

27 August 2024 17:23

Wenn während der Aktualisierung des Betriebssystems der Strom ausfällt, müssen Sie nach dem Booten im Wiederherstellungsmodus die Integrität des Betriebssystems überprüfen.

Planen Sie die Wiederherstellung der Betriebssystemintegrität

  1. Netzwerkbetrieb wiederherstellen
  2. Das lokale Paket-Repository bereinigen
  3. Paketprüfsummen generieren
  4. Prüfsummen von Paketen und Konfigurationsdateien prüfen
  5. Probleme mit Paketen beheben
    5.1 Konfiguration von Paketen abschließen, die installiert, aber nicht konfiguriert sind
    5.2 Pakete neu installieren, bei denen Prüfsummenänderungen aufgetreten sind
    5.3 Fehlerhafte Pakete reparieren
  6. Kernelmodule von Drittanbietern deaktivieren
  7. Endgültige Überprüfung der Betriebssystemintegrität mit dpkg -V
  8. Geänderte Konfigurationsdateien auflisten und anzeigen
  9. Paketversionen aktualisieren
    10.Wiederherstellung von Snap und Flatpak
    11.Neustart

 

1. Wiederherstellen des Netzwerks

Wenn das Netzwerk funktioniert, überspringen Sie den Punkt.

Sie müssen das Ethernet-Kabel anschließen und die Netzwerkkarte starten

ifconfig -a | less
sudo nano /etc/network/interfaces

auto ensp2s0
iface enp2s0 inet dhcp
Nameserver 8.8.8.8

sudo dhclient enp2s0
sudo resolvconf -u
sudo service networking restart
ping ya.ru

2. Paketcache leeren

sudo apt-get clean

Dieser Befehl löscht das lokale Repository von empfangenen Paketdateien. Die Bereinigung ist erforderlich, um Prüfsummen für Pakete zu generieren, die nicht aus dem lokalen Paketcache stammen, wo sie gefälscht worden sein könnten.

3. Paketprüfsummen generieren

Installieren des Debsums-Dienstprogramms

sudo apt install debsums

Debsums initialisieren (nur Ubuntu Linux).

sudo debsums_init 

4. Überprüfung der Prüfsummen von Paketen und Konfigurationsdateien

Zur Überprüfung alle Dateien, einschließlich Konfigurationsdateien:

sudo debsums --all --changed --silent

oder kurz

sudo debsums -acs

So überprüfen Sie nur Binärdateien, ausgenommen Konfigurationsdateien:

sudo debsums --changed --silent

oder kurz

sudo debsums -cs

Wechseln Sie -a (oder --all), um jede Datei, einschließlich der Konfigurationsdatei, zu überprüfen.
Der Schalter -c zeigt nur geänderte Pakete an (identisch mit --changed).
Der Schalter -s (identisch mit „--silent“) unterdrückt die Ausgabe von Zeilen, in denen keine Änderungen vorgenommen wurden.

Um die Anzeige geänderter PNG- und SVG-Dateien zu vermeiden, können Sie die folgende verbesserte Version des Befehls verwenden:

sudo debsums --all --changed --silent | grep -v '.png*\|.svg*'

Die zweite Option ist vorzuziehen,ohne die Konfigurationsdateien zu überprüfen, ohne Änderungen an PNG- und SVG-Ressourcendateien aus der Ausgabe:

sudo debsums -cs | grep -v '.png*\|.svg'

Wo ist der Schlüssel?-v bedeutet, die Auswahl umzukehren – also „alles außer“ auszuwählen.

Erklärung: Durch die Verwendung von grep in der Befehlsausgabe habe ich Erwähnungen von PNG-Bildern ausgeschlossen. und SVG.
Die Bilder beziehen sich auf das Design-Theme, in meinem Fall zum Beispiel auf das adwaita-icon-theme-full-Paket (wie man den Paketnamen anhand des Dateinamens herausfindet, ist im Absatz 5.2).

Wenn das Dienstprogramm Debsums sollten Probleme mit Paketen festgestellt werden, kann der Vorgang mit der Tastenkombination Strg+C unterbrochen werden und mit dem nächsten Schritt in der Anleitung fortfahren, da Debsums zeigt nur das Vorhandensein von Problemen an, behebt diese jedoch nicht.

5. Beheben Sie Paketprobleme

5.1 Abschließen der Paketkonfiguration

Dieser Befehl erzwingt die Konfiguration von Paketen, die entpackt, aber nicht konfiguriert wurden. Der Schalter -a weist das System an, alle entpackten, aber nicht konfigurierten Pakete zu verarbeiten.

sudo dpkg --configure -a

5.2 Neuinstallation von Paketen, deren Prüfsummen geändert wurden

Pakete werden einzeln mit dem Befehl sudo apt --reinstall install wiederhergestellt Paketname. Zuerst müssen Sie den Paketnamen finden.

Normalerweise wird der Paketname in der Ausgabe des Debsums-Befehls auf der rechten Seite in Klammern aufgeführt (z. B. der Text „aus dem amdgpu-install-Paket“), was „aus dem amdgpu-install-Paket“ bedeutet.

Bei Dateien, bei denen der Paketname nicht angegeben ist, kann der Paketname anhand des Namens der Datei ermittelt werden, deren Prüfsumme geändert wurde.

Zum Beispiel, wenn die Ausgabe fehlende Datei /etc/dhcp/dhclient.conf sie können feststellen, zu welchem Paket diese Datei gehört:

dpkg --search fqdn

Dabei ist fqdn beispielsweise der vollständige Pfad zur geänderten Datei./etc/dhcp/dhclient.conf

In diesem Beispiel lautet die Antwort:
isc-dhcp-client

Installieren Sie ein separates Paket neu:

sudo apt --reinstall install package_name

oder

sudo apt-get --reinstall install package_name

Dabei ist: Paketname der Name des Pakets.

Zum Beispiel:

sudo apt --reinstall installiere isc-dhcp-client

Wenn das Paket nicht mehr benötigt wird (ein „Endstück“ der vorherigen Konfiguration), können Sie es deinstallieren. In meinem Fall wird die AMD-Grafikkarte nicht verwendet und ich habe den Befehl zum Entfernen des Pakets mit dem Namen „amdgpu-install“ ausgeführt:

sudo apt remove -y amdgpu-install

Wiederholen Sie Punkt 5.2 bis zur Befehlsausgabe sudo debsums -cs wird nicht leer werden.

Automatisierung des Systemreparaturprozesses

Sie können alle Pakete mit einem Befehl neu installieren:

sudo apt-get install -y --reinstall $(dpkg -S $(sudo debsums -cs) | cut -d : -f 1 | sort -u)

Ohne Bilder:

sudo apt-get install -y --reinstall $(dpkg -S $(sudo debsums -cs) |  grep -v '.png*\|.svg' | cut -d : -f 1 | sort -u)

Wobei der Schalter sort -u doppelte Paketnamen eliminiert.

(Quelle -askubuntu.com)

Hinweis: Fehlende Dateien müssen manuell aus Paketen installiert werden. In meinem Fall zum Beispiel basierend auf den Ergebnissen der Ausführung sudo debsums -cs ich musste die Pakete youtube-dl python3-pkg-resources python3-protobuf usw. manuell neu installieren.

sudo debsums -cs | grep -v '.png*\|.svg' | sort -u
sudo apt-get install -y --reinstall youtube-dl python3-pip python3-debian python3-pkg-resources python3-protobuf python3-levenshtein sound-theme-freedesktop

5.3 Defekte Pakete reparieren

sudo apt install -f

wobei -f dasselbe ist wie --fix-broken

sudo apt install --fix-broken

Beschreibung; Dieser Befehl versucht, ein System mit fehlerhaften Abhängigkeiten zu reparieren.

Wenn der letzte Befehl die Meldung „Post-Installation-Skript-Unterprozess hat Fehler zurückgegeben“ erzeugt, brechen Sie den Vorgang ab. „ – Sie müssen den Paketnamen aus der Ausgabe des Befehls apt install -f ermitteln Paketname und dann ausführen:

sudo rm /var/lib/dpkg/info/package_name
sudo dpkg --configure -D 777 package_name
sudo apt-get --reinstall install package_name

6. Deaktivieren überflüssiger Kernelmodule und Entfernen unnötiger Komponenten

Beim Ausführen des Befehls debsums -cs wurden die Datei lsb-cprocsp-rdr-64 und die INI-Datei gefunden /etc/opt/cprocsp/config64.ini, die nichts mit dem Linux-Betriebssystem zu tun haben. Diese Dateien stammen von der externen Komponente CryptoPRO CSP, die ich vor langer Zeit entfernt habe, sind aber im System vorhanden.

Zeigt eine Liste der Kernelmodule an, die beim Start des Betriebssystems geladen werden:

lsmod

Nur die erste Spalte:

lsmod | cut -d " " -f 1 | sort | less

Modulspuren prüfen cprocsp(CryptoPro) im Ordner „/etc/modprobe.d/“

grep -Rnw '/etc/modprobe.d/' -e cprocsp 

Das cprocsp-Beispiel wurde unter den Kernelmodulen nicht gefunden.

Optionale Komponenten werden im Ordner /opt installiert. Der Inhalt muss kontrolliert werden.

Ich habe den Ordner „/opt/cprocsp“ als unnötig gelöscht.

sudo rm -rf /opt/cprocsp

Löschen einer Konfigurationsdatei

sudo rm -rf /etc/opt/cprocsp

7. Abschließende Überprüfung der Betriebssystemintegrität mit dpkg -V

sudo dpkg -V

Dabei ist -V der Schalter zum Überprüfen aller Pakete auf dem System. Der Befehl überprüft die Integrität, indem er Informationen aus installierten Paketdateien und Metadateninformationen vergleicht, die in der dpkg-Datenbank gespeichert sind.

Nach wie vor finde ich die Namen der neu zu installierenden Pakete, aber in einem Befehl „ist die Liste der Argumente zu lang“, also habe ich sie in mehrere Schritte unterteilt.

ЭтаS. 1. Fehler mit dpkg -V finden

sudo dpkg -V  > ~/files_missing.txt

Die Ausführungszeit dieses Befehls beträgt 10 Minuten bis eine Stunde.

Sehen Sie sich das Ergebnis der Arbeit an:

cat ~/files_missing.txt

ЭтаS. 2. Suchen Sie nach entsprechenden Paketdateien:

cat ~/files_missing.txt | grep -v '\?\?\?' | sed "s/missing//"  > ~/files_missing2.txt
cat ~/files_missing.txt | grep '\?\?\?' | sed "s/??5??????//"  > ~/files_changed.txt

Hier:

  • in der ersten Datei files_missing2.txt werden Dateien ohne Maske ausgeschlossen ???5??????, also nur fehlende Dateien.
  • In der zweiten Liste sind files_changed.txt-Dateien mit einer Maske enthalten ???5??????- also geänderte Dateien.

    Teil 1. paketnamen definieren abwesend dateien zur Neuinstallation:

    while read p; do
        echo "$p" 
        dpkg -S "$p" >> ~/reinstall.txt
    done 

Teil 2. paketnamen definieren geändert dateien zur Neuinstallation:

    while read p; do
        echo "$p" 
        dpkg -S "$p" >> ~/reinstall.txt
    done 

Paketnamen werden nach ~/reinstall2.txt kopiert

    while read p; do
        echo "$p" 
        echo "$p" | cut -d ":" -f 1 >> ~/reinstall2.txt
    erledigt 

Datei ansehen reinstall2.txt mit einer Liste der neu zu installierenden Pakete:

cat ~/reinstall2.txt

Sortieren (eindeutig) und Entfernen von Kommas in der Datei reinstall3.txt:

sort -u reinstall2.txt | sed 's/,//g' | sed 's/ /\n/g' | sort -u  > reinstall3.txt

Neuinstallation der Pakete gemäß der Liste aus der Datei:

while read p; do

echo „$p“
sudo apt-get install -y --reinstall "$p"
erledigt < ~/reinstall3.txt

8. Zusammenstellen einer Liste der geänderten Konfigurationsdateien

Zusammenstellen einer Liste geänderter Konfigurationsdateien:
Wir verwerfen die „fehlenden“ Zeilen.

sudo dpkg -V  | grep -v 'missing' > ~/files_changed.txt

Liste der Dateien files_changed.txt sollte studiert werden. Sie können zusätzlich nur Zeilen mit der Spalte „c“ auswählen (geändert)

cat ~/files_changed.txt |  grep " c " | cut -d " " -f 3

Wir studieren die Liste und überprüfen jede *.conf-Datei aus der Liste. Wenn Sie nur ein Paket neu installieren müssen, ist es am einfachsten, das entsprechende Paket zu finden und es neu zu installieren.

Zum Beispiel:

dpkg --search /etc/ld.so.conf

libc-bin: /etc/ld.so.conf

sudo apt-get install -y --reinstall libc-bin

dpkg --search /etc/sysctl.conf

procps: /etc/sysctl.conf

sudo apt-get install -y --reinstall procps

Usw.

9. Paketversionen aktualisieren

Beheben von Problemen mit Paketen, die nicht vollständig installiert wurden.

sudo dpkg --configure -a

Ich habe die Versionen wie gewohnt aktualisiert:

sudo apt update
sudo apt upgrade -y

Fehlerbehebung bei nicht erfüllten Abhängigkeiten:

sudo apt --fix-broken install
sudo apt dist-upgrade

10. Snap- und Flatpak-Wiederherstellung

Im Falle des Ladens Schnapp installiert sind, sind mir spezielle Befehle zum Überprüfen von Paketen nicht bekannt. Sie können Pakete neu installieren:

snap list
sudo snap remove package_name
sudo snap install package_name

Mehrere Pakete – Entfernung:

for package_name in package_name1, package_name2, package_name3
do
    sudo snap remove $package_name
done

Mehrere Pakete - Installation:

for package_name in package_name1, package_name2, package_name3
tun
    sudo snap install $package_name
done

Dabei ist Paketname der Name des Pakets.

Um Paketversionen im Snap-Speicher zu aktualisieren, müssen Sie den folgenden Befehl ausführen:

sudo snap refresh --ignore-running

Überprüfen der im Store installierten Anwendungspakete Flatpak:

flatpak repair

Das Wiederherstellen von Flatpak ist kein schneller Vorgang, es dauert etwa zehn Minuten.

11. Neustart

Wenn die Datei in Schritt Nr. 1 der Anleitung bearbeitet wurde /etc/network/interfaces, müssen Sie die Änderungen rückgängig machen: Löschen Sie entweder die Zeilen zum Starten der Netzwerkkarte (auto enp2s0, ...) und des DNS-Servers (dns-nameserver ...) oder kommentieren Sie sie aus:

sudo nano /etc/network/interfaces

auto enp2s0

iface enp2s0 inet dhcp

Nameserver 8.8.8.8

Änderungen speichern und beenden: Strg+O, Strg+X.

Wir starten das Betriebssystem neu:

sudo shutdown -r now

Informationsquelle: askubuntu.com
Datum der letzten Bearbeitung: 09.02.2024 – Abschnitt Nr. 10 über Snap und Flatpak wurde hinzugefügt.



Verwandte Veröffentlichungen