27
août
2024
17:23

Comment vérifier l'intégrité du système d'exploitation Linux

27 août 2024 17:23

Si l'alimentation est coupée lors de la mise à jour du système d'exploitation, après avoir démarré en mode de récupération, vous devez vérifier l'intégrité du système d'exploitation.

Planifier la restauration de l'intégrité du système d'exploitation

  1. Restaurer le fonctionnement du réseau
  2. Nettoyer le dépôt de paquets local
  3. Générer les sommes de contrôle des paquets
  4. Vérification des sommes de contrôle des packages et des fichiers de configuration
  5. Résolution des problèmes avec les packages
    5.1 Terminer la configuration des packages installés mais non configurés
    5.2 Réinstaller les packages dont la somme de contrôle a été modifiée
    5.3 Réparer les paquets cassés
  6. Désactiver les modules de noyau tiers
  7. Vérification finale de l'intégrité du système d'exploitation à l'aide de dpkg -V
  8. Liste et affichage des fichiers de configuration modifiés
  9. Mise à jour des versions du package
    10.Récupération de Snap et Flatpak
    11.Redémarrer

 

1. Restauration du réseau

Si le réseau fonctionne, sautez ce point.

Vous devez connecter le câble Ethernet et démarrer la carte réseau

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

ensp2s0 automatique
iface enp2s0 inet DHCP
serveurs de noms 8.8.8.8

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

2. Vider le cache du paquet

sudo apt-get clean

Cette commande efface le référentiel local des fichiers de package reçus. Le nettoyage est nécessaire pour générer des sommes de contrôle pour les packages ne provenant pas du cache de packages local, où ils auraient pu être usurpés.

3. Générer des sommes de contrôle de paquets

Installation de l'utilitaire Debsums

sudo apt install debsums

Initialisation des debsums (Ubunti Linux uniquement).

sudo debsums_init 

4. Vérification des sommes de contrôle des packages et des fichiers de configuration

Pour vérifier tous les fichiers, y compris les fichiers de configuration :

sudo debsums --all --changed --silent

ou pour faire court

sudo debsums -acs

Pour vérifier uniquement les fichiers binaires, à l'exclusion des fichiers de configuration :

sudo debsums --changed --silent

ou pour faire court

sudo debsums -cs

Basculez -a (ou --all) pour vérifier chaque fichier, y compris le fichier de configuration.
Le commutateur -c affiche uniquement les packages modifiés (identique à --changed),
le commutateur -s (identique à "--silent") supprime la sortie des lignes pour lesquelles il n'y a aucun changement.

Pour éviter d'afficher les .png et .svg modifiés, vous pouvez utiliser la version améliorée suivante de la commande :

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

L'option second est plus préférable,sans vérifier les fichiers de configuration, à l'exclusion des modifications apportées aux fichiers de ressources png et svg de la sortie :

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

où est la clé -v signifie inverser la sélection - c'est-à-dire sélectionner "tout sauf".

Explication: en utilisant grep dans la sortie de la commande, j'ai exclu les mentions d'images png. et svg.
Les images concernent le thème de conception, par exemple, dans mon cas, le package adwaita-icon-theme-full (comment connaître le nom du package par le nom du fichier est décrit dans le paragraphe 5.2).

Si l'utilitaire debsums trouvé des problèmes avec les packages, le processus peut être interrompu avec la combinaison de touches Ctrl+C et passer à l'étape suivante dans les instructions, car debsums montre seulement la présence de problèmes, mais ne les corrige pas.

5. Résoudre les problèmes de package

5.1 Finalisation de la configuration du package

Cette commande force la configuration des packages qui ont été décompressés mais non configurés. Le commutateur -a indique au système de traiter tous les packages décompressés mais non configurés.

sudo dpkg --configure -a

5.2 Réinstallation des packages dont les sommes de contrôle ont été modifiées

Les packages sont restaurés un par un avec la commande sudo apt --reinstall install nom du paquet. Vous devez d’abord trouver le nom du package.

En règle générale, le nom du package est répertorié dans la sortie de la commande debsums sur le côté droit entre parenthèses (par exemple, le texte « du package amdgpu-install »), ce qui signifie « du package amdgpu-install ».

Pour les fichiers dont le nom du package est non spécifié, le nom du package peut être déterminé par le nom du fichier dont la somme de contrôle a été modifiée.

Par exemple, si la sortie fichier manquant /etc/dhcp/dhclient.conf vous pouvez déterminer à quel package appartient ce fichier :

dpkg --search fqdn

où fqdn est le chemin complet du fichier modifié, par exemple :/etc/dhcp/dhclient.conf

Dans cet exemple, la réponse est :
client isc-dhcp

Réinstallez un package distinct :

sudo apt --reinstall install package_name

ou

sudo apt-get --reinstall install package_name

où : package_name est le nom du package.

Par exemple :

sudo apt --reinstall install isc-dhcp-client

Si le package n'est plus nécessaire (une "queue" de la configuration précédente), vous pouvez le désinstaller. Dans mon cas, la carte vidéo AMD n'est pas utilisée et j'ai exécuté la commande pour supprimer le package nommé "amdgpu-install"  :

sudo apt supprimer -y amdgpu-install

Répétez le point 5.2 jusqu'à la sortie de la commande sudo debsums -cs ne deviendra pas vide.

Automatisation du processus de réparation du système

Vous pouvez réinstaller tous les packages avec une seule commande :

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

Sans photos :

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

Où le commutateur sort -u élimine les noms de packages en double.

(Source -askubuntu.com)

Remarque : les fichiers manquants devront être installés manuellement à partir des packages. Par exemple, dans mon cas, sur la base des résultats de l'exécution sudo debsums -cs j'ai dû réinstaller manuellement les packages youtube-dl python3-pkg-resources python3-protobuf etc.

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 Réparer les paquets cassés

sudo apt install -f

où -f est identique à --fix-broken

sudo apt install --fix-broken

Descriptif; Cette commande tentera de réparer un système avec des dépendances rompues.

Si la dernière commande produit le message « Le sous-processus de script de post-installation a renvoyé une erreur », abandonnez. " - vous devez déterminer le nom du package à partir de la sortie de la commande apt install -f nom_du_paquet puis exécutez :

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

6. Désactivation des modules de noyau superflus et suppression des composants inutiles

Lors de l'exécution de la commande debsums -cs, il a trouvé le fichier lsb-cprocsp-rdr-64 et le fichier ini /etc/opt/cprocsp/config64.ini, qui ne sont pas liés au système d'exploitation Linux. Ces fichiers proviennent du composant externe CryptoPRO CSP, que j'ai supprimé il y a longtemps, mais ils sont présents dans le système.

Affiche une liste des modules du noyau chargés au démarrage du système d'exploitation :

lsmod

Seule la première colonne :

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

Vérification des traces des modules cprocsp(CryptoPro) dans le dossier '/etc/modprobe.d/'

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

L'exemple cprocsp n'a pas été trouvé parmi les modules du noyau.

Les composants facultatifs sont installés dans le dossier /opt. Dont le contenu doit être contrôlé.

J'ai supprimé le dossier "/opt/cprocsp" car inutile.

sudo rm -rf /opt/cprocsp

Supprimer un fichier de configuration

sudo rm -rf /etc/opt/cprocsp

7. Vérification finale de l'intégrité du système d'exploitation à l'aide de dpkg -V

sudo dpkg -V

où -V est le commutateur permettant de vérifier tous les packages du système. La commande vérifie l'intégrité en comparant les informations des fichiers de package installés et les informations de métadonnées stockées dans la base de données dpkg.

Comme auparavant, je trouve les noms des packages à réinstaller, mais dans une commande « la liste des arguments est trop longue », je l'ai donc divisée en plusieurs étapes.

Этаp 1. Recherche d'erreurs en utilisant dpkg -V

sudo dpkg -V  > ~/files_missing.txt

Le temps d'exécution de cette commande est de 10 minutes à une heure.

Visualisez le résultat des travaux :

cat ~/files_missing.txt

Этаp 2. Recherchez les fichiers de package correspondants :

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

Ici :

  • dans le premier fichier files_missing2.txt, les fichiers sans masque sont exclus ??5??????, c'est-à-dire uniquement les fichiers manquants.
  • dans la deuxième liste, les fichiers files_changed.txt avec un masque sont inclus ??5??????- c'est-à-dire des fichiers modifiés.

    Partie 1. définir les noms des packages absent fichiers à réinstaller :

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

Partie 2. définir les noms des packages changé fichiers à réinstaller :

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

Copie des noms de packages dans ~/reinstall2.txt

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

Afficher le fichier réinstaller2.txt avec une liste de packages à réinstaller :

cat ~/reinstall2.txt

Tri (unique) et suppression des virgules, dans le fichier reinstall3.txt :

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

Réinstallation des packages selon la liste du fichier :

while read p; do

écho "$p"
sudo apt-get install -y --reinstall "$p"
terminé < ~/reinstall3.txt

8. Compilation d'une liste des fichiers de configuration modifiés

Compilation d'une liste des fichiers de configuration modifiés :
Nous supprimons les lignes "manquantes".

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

Liste des fichiers fichiers_changed.txt devrait être étudié. Vous pouvez en outre sélectionner uniquement les lignes avec la colonne "c" (modifiée)

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

Nous étudions la liste et vérifions chaque fichier *.conf de la liste. Si vous avez simplement besoin de réinstaller un package, le moyen le plus simple consiste à rechercher le package approprié et à le réinstaller.

Par exemple :

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

Etc.

9. Mise à jour des versions des packages

Résolution des problèmes avec les packages qui n'étaient pas entièrement installés.

sudo dpkg --configure -a

J'ai mis à jour les versions comme d'habitude :

sudo apt update
sudo apt upgrade -y

Dépannage des dépendances non satisfaites :

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

10. Récupération Snap et Flatpak

Au cas où le magasin casser installé, je ne connais pas de commandes spéciales pour vérifier les packages. Vous pouvez réinstaller les packages :

snap list
sudo snap remove package_name
sudo snap install package_name

Packages multiples – suppression :

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

Plusieurs packages - installation :

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

Où package_name est le nom du package.

Pour mettre à jour les versions des packages dans le stockage instantané, vous devez exécuter la commande :

sudo snap refresh --ignore-running

Vérification des packages d'applications installés à partir du magasin paquet plat:

flatpak repair

Restaurer flatpak n’est pas une opération rapide, cela prend une dizaine de minutes.

11. Redémarrer

Si le fichier a été modifié à l'étape n°1 des instructions /etc/réseau/interfaces, vous devez annuler les modifications : soit supprimer les lignes de démarrage de la carte réseau (auto enp2s0, ...) et du serveur DNS (dns-nameserver ...), soit les commenter :

sudo nano /etc/network/interfaces

automatique enp2s0

iface enp2s0 inet DHCP

serveur de noms 8.8.8.8

Enregistrez les modifications et quittez : Ctrl+O, Ctrl+X.

Nous redémarrons le système d'exploitation :

sudo shutdown -r now

Source d'informations : askubuntu.com
Date de la dernière édition : 02/09/2024 - la section n°10 sur les snap et flatpak a été ajoutée.



Publications connexes