Définition de l'emplacement de vidage du noyau Linux

Definition De L Emplacement De Vidage Du Noyau Linux



Qu'est-ce que le 'Core Dump' sous Linux ?

Lorsqu'un processus se termine de manière inattendue, il laisse souvent derrière lui un « core dump » dans votre système. Il y a un message pertinent qui est inclus avec cela. Un noyau sert d'outil de débogage et est une image de la mémoire qui inclut également les informations de débogage. Si vous êtes un utilisateur qui ne souhaite pas déboguer un programme, vous pouvez simplement supprimer le noyau :

$ rm cœur

Vous pouvez également le laisser intact, car l'ancien noyau est écrasé si un nouveau est vidé. Vous pouvez également désactiver le vidage de mémoire avec la commande suivante :







$ diminuer -c 0

Nous pouvons générer les core dumps à la demande (par exemple, via un débogueur) ou ils peuvent être produits automatiquement à la fin. Le noyau lance des vidages mémoire à la suite de la sortie brutale d'un programme. Ceux-ci peuvent être envoyés à un autre programme (tel que systemd-coredump) pour des opérations supplémentaires.



Comme c'est généralement le cas, il existe un compromis entre la collecte des données pour une meilleure stabilité et un meilleur dépannage et le risque de révéler des informations sensibles à partir des données de débogage.



Que couvrirons-nous ?

Dans cet article, nous verrons comment définir l'emplacement des vidages de mémoire sur le système d'exploitation Ubuntu 20.04. Commençons maintenant.





Génération d'un vidage mémoire

Voyons d'abord comment générer un core dump. Pour cela, nous utilisons la commande Linux kill. Tout d'abord, trouvez le PID d'un processus, puis envoyez un signal d'arrêt. Par exemple, lançons le processus de mise en veille, puis tuons-le avec son PID :

$ sommeil 500

$ tuer -s SIGTRAP $ ( saisir sommeil )



Maintenant que vous avez appris à générer un vidage mémoire, vous pouvez l'utiliser dans les sections suivantes.

Où vont-ils?

Le fichier core dump est nommé core.pid par défaut et est créé dans le répertoire de travail de l'application. Ici, pid est l'identifiant du processus.

Avec l'outil ulimit, vous pouvez obtenir ou modifier les limites des ressources système pour le shell actuel et tous les shells qui le suivent. Pour vérifier ou configurer la limite de taille du fichier principal, utilisez la commande suivante :

$ diminuer -c

Afin d'éviter de délimiter ou de tronquer le fichier core, assurez-vous que la limite est globalement fixée à « illimité » [1]. Cela peut être fait dans /etc/security/limits.conf en ajoutant la ligne suivante :

racine - noyau illimité

* - noyau illimité

Maintenant, déconnectez-vous et reconnectez-vous simplement pour que les limites soient appliquées à votre session.

Personnalisation de l'emplacement du vidage mémoire

La commande 'sysctl kernel.core_pattern' ou '/proc/sys/kernel/core_pattern' est normalement utilisée pour définir l'emplacement où vont les vidages de mémoire.

Saisissez la commande suivante pour afficher les paramètres du modèle de base actuel :

$ chat / proc / système / noyau / core_pattern

Habituellement, vous trouverez la valeur par défaut répertoriée comme 'core' ici.

Utilisation de '/proc/sys/kernel/core_pattern' pour définir l'emplacement du vidage principal

Redirigons temporairement les core dumps vers un nouvel emplacement, disons /tmp/dumps/core, en utilisant le fichier « /proc/sys/kernel/core_pattern » [2] [3]. Maintenant, suivez les étapes suivantes :

Étape 1 . Tout d'abord, créez un répertoire pour stocker les vidages mémoire :

$ mkdir -p / tmp / décharger / noyaux /

Étape 2 . Accordez les autorisations requises à ce répertoire :

$ chmod a+x / tmp / décharger / noyaux /

Étape 3 . Maintenant, définissez temporairement le chemin du core dump :

$ écho '/tmp/dump/cœurs/cœur' | sudo tee / proc / système / noyau / core_pattern

Encore une fois, définissez globalement l'ulimit sur illimité.

Ici, nous pouvons ajouter d'autres informations au nom du fichier comme indiqué ci-dessous :

$ écho '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / système / noyau / core_pattern

Chaque paramètre utilisé ici peut être défini comme suit :

% et: pour exécutable dossier Nom

% p : pour processus identifiant ou pid.

% t : pour ajouter un horodatage

Étape 4 . Ensuite, nous devons modifier le fichier '/etc/sysctl.conf' pour appliquer définitivement les paramètres précédents. Ouvrez ce fichier :

$ sudo nano / etc / sysctl.conf

Maintenant, ajoutez la ligne suivante à ce fichier :

noyau.core_pattern = / tmp / décharger / noyaux / cœur

De plus, au lieu de cette ligne, vous pouvez ajouter ceci :

noyau.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

C'est tout ce que nous devons faire. Maintenant, générez un vidage de mémoire comme mentionné dans la section 'Génération d'un vidage de mémoire'. Après cela, nous pouvons vérifier si notre fichier core est généré ou non :

$ ls -l / tmp / décharger / noyaux /

Utilisation de la commande 'Sysctl' pour définir l'emplacement du vidage principal

Comme mentionné précédemment, nous pouvons également utiliser la commande sysctl dans le même but. Modifions l'emplacement du core dump et le format du fichier core :

Étape 1 . Créez un nouveau répertoire et accordez les autorisations requises :

$ mkdir -p / tmp / mes décharges

$ chmod a+rwx / tmp / mes décharges

Étape 2 . Maintenant, exécutez simplement la commande suivante :

$ sudo sysctl -dans noyau.core_pattern= / tmp / mes décharges / cœur_ % et. % p_ % t

Étape 3 . Maintenant, encore une fois, générez le vidage mémoire comme nous l'avons fait précédemment. Après cela, vérifiez si le fichier core est généré ou non :

$ ls -l / tmp / mes décharges /

Sur les systèmes Ubuntu, les vidages de mémoire sont souvent envoyés à Apport. Pour les systèmes basés sur Red Hat, il peut être transmis à l'outil de rapport de bogue automatique (ABRT). Au départ, j'étais confronté à un problème de configuration de l'emplacement du vidage principal, j'ai donc dû désactiver complètement Apport sur Ubuntu 20.04. Peut-être que cela peut aussi être le cas avec Red Hat et d'autres.

Conclusion

Dans cet article, nous avons vu comment personnaliser l'emplacement des vidages de mémoire sur le système d'exploitation Ubuntu 20.04. Les vidages de mémoire peuvent vous aider à comprendre ce qui ne va pas, mais ils sont terribles pour la fuite de données sensibles. Les vidages mémoire doivent être désactivés lorsqu'ils ne sont pas nécessaires et activés uniquement lorsque cela est absolument nécessaire. Dans une telle situation, confirmez que les fichiers sont stockés en toute sécurité afin que les utilisateurs ordinaires ne puissent pas accéder aux données. De plus, quelle que soit votre décision, vous devez toujours tester votre configuration pour vous assurer qu'elle fonctionne comme prévu.

Les vidages de mémoire et les configurations par défaut sont gérés différemment par les différents systèmes d'exploitation. Ces derniers temps, la plupart des systèmes Linux ont adopté systemd, ce qui a entraîné quelques ajustements mineurs des règles. Selon la configuration de votre système, vous devrez peut-être rechercher des vidages mémoire.