Sette Linux Core the Dump Location

Sette Linux Core The Dump Location



Hva er 'Core Dump' i Linux?

Når en prosess uventet avsluttes, etterlater den ofte en 'kjernedump' i systemet ditt. Det er en relevant melding som følger med dette. En kjerne fungerer som et feilsøkingsverktøy og er et bilde av minne som også inkluderer feilsøkingsinformasjonen. Hvis du er en bruker som ikke vil feilsøke et program, kan du bare slette kjernen:

$ rm kjerne

Du kan også la den stå urørt, siden den gamle kjernen overskrives hvis en ny noen gang blir dumpet. Du kan også deaktivere kjernedumpingen med følgende kommando:







$ avta -c 0

Vi kan generere kjernedumpene på forespørsel (for eksempel via en debugger) eller de kan produseres automatisk ved avslutning. Kjernen starter kjernedumper som en konsekvens av et programs brå avslutning. Disse kan sendes til et annet program (som systemd-coredump) for ytterligere operasjoner.



Som vanlig er det en avveining mellom å samle inn dataene for bedre stabilitet og feilsøking og risikoen for å avsløre den sensitive informasjonen fra feilsøkingsdata.



Hva vil vi dekke?

I denne artikkelen vil vi se hvordan du angir plasseringen av kjernedumper på Ubuntu 20.04 OS. La oss komme i gang nå.





Generering av en kjernedump

La oss først se hvordan vi kan generere en kjernedump. For dette bruker vi Linux kill-kommandoen. Finn først PID-en til en prosess og send deretter et drepesignal. La oss for eksempel starte søvnprosessen og deretter drepe den med PID:

$ søvn 500

$ drepe -s SIGTRAP $ ( pgrep søvn )



Nå som du lærte hvordan du genererer en kjernedump, kan du bruke den i de følgende påfølgende avsnittene.

Hvor går de?

Kjernedumpfilen heter core.pid som standard og opprettes i arbeidskatalogen til applikasjonen. Her er pid prosess-ID.

Med ulimit-verktøyet kan du få eller endre systemressursgrensene for gjeldende skall og eventuelle skall som kommer etter det. For å bekrefte eller konfigurere grensen for kjernefilstørrelse, bruk følgende kommando:

$ avta -c

For å unngå å avgrense eller avkorte kjernefilen, sørg for at grensen er globalt satt til 'ubegrenset' [1]. Dette kan gjøres i /etc/security/limits.conf ved å legge til følgende linje:

root - kjerne ubegrenset

* - kjerne ubegrenset

Nå er det bare å logge av og på igjen for grensene som skal gjelde for økten din.

Tilpasse plasseringen av kjernedumpen

Kommandoen 'sysctl kernel.core_pattern' eller '/proc/sys/kernel/core_pattern' brukes vanligvis til å angi plasseringen hvor kjernedumpene går.

Skriv inn følgende kommando for å se innstillingene for gjeldende kjernemønster:

$ katt / proc / sys / kjerne / kjernemønster

Vanligvis vil du finne standardverdien oppført som 'kjerne' her.

Bruke '/proc/sys/kernel/core_pattern' for å angi kjernedumpplasseringen

La oss midlertidig omdirigere kjernedumpene til en ny plassering, si /tmp/dumps/core, ved å bruke '/proc/sys/kernel/core_pattern'-filen [2] [3]. Følg nå følgende trinn:

Trinn 1 . Lag først en katalog for å lagre kjernedumpene:

$ mkdir -s / tmp / dump / kjerner /

Steg 2 . Gi de nødvendige tillatelsene til denne katalogen:

$ chmod a+x / tmp / dump / kjerner /

Trinn 3 . Sett nå kjernedumpbanen midlertidig:

$ ekko '/tmp/dump/cores/core' | sudo tee / proc / sys / kjerne / kjernemønster

Igjen, globalt sett ulimit til ubegrenset.

Her kan vi legge til annen informasjon til navnet på filen som vist i følgende:

$ ekko '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / sys / kjerne / kjernemønster

Hver parameter som brukes her kan defineres som følger:

% og: til kjørbar fil Navn

% p: til prosess id eller pid.

% t: til legge til et tidsstempel

Trinn 4 . Deretter må vi endre filen '/etc/sysctl.conf' for å bruke de tidligere innstillingene permanent. Åpne denne filen:

$ sudo nano / etc / sysctl.conf

Legg nå til følgende linje i denne filen:

kernel.core_pattern = / tmp / dump / kjerner / kjerne

Også, i stedet for denne linjen, kan du legge til dette:

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

Det er alt vi trenger å gjøre. Generer nå en kjernedump som nevnt i delen 'Generere en kjernedump'. Etter dette kan vi sjekke om kjernefilen vår er generert eller ikke:

$ ls -l / tmp / dump / kjerner /

Bruk 'Sysctl'-kommandoen for å angi Core Dump-plassering

Som nevnt tidligere kan vi også bruke sysctl-kommandoen til samme formål. La oss endre kjernedumpplasseringen og formatet til kjernefilen:

Trinn 1 . Opprett en ny katalog og gi de nødvendige tillatelsene:

$ mkdir -s / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Steg 2 . Nå er det bare å kjøre følgende kommando:

$ sudo sysctl -i kernel.core_pattern= / tmp / mydumps / kjerne_ % og. % p_ % t

Trinn 3 . Nå, igjen, generer kjernedumpen som vi gjorde tidligere. Etter dette, sjekk om kjernefilen er generert eller ikke:

$ ls -l / tmp / mydumps /

På Ubuntu-systemer sendes ofte kjernedumper til Apport. For Red Hat-baserte systemer kan den videresendes til det automatiske feilrapporteringsverktøyet (ABRT). Opprinnelig sto jeg overfor et problem med å konfigurere kjernedumpplasseringen, så jeg måtte deaktivere Apport helt på Ubuntu 20.04. Kanskje kan dette også være tilfelle med Red Hat og andre.

Konklusjon

I denne artikkelen har vi sett hvordan vi kan tilpasse plasseringen av kjernedumper på Ubuntu 20.04 OS. Kjernedumper kan hjelpe deg med å finne ut hva som er galt, men de er forferdelige for å lekke sensitive data. Kjernedumper bør deaktiveres når de ikke er påkrevd og bare aktiveres når det er absolutt nødvendig. I en slik situasjon må du bekrefte at filene er trygt lagret slik at de vanlige brukerne ikke kan få tilgang til dataene. Videre, uavhengig av avgjørelsen din, bør du alltid teste konfigurasjonen for å sikre at den fungerer etter hensikten.

Kjernedumper og standardkonfigurasjoner håndteres forskjellig av ulike operativsystemer. I nyere tid har de fleste Linux-systemer tatt i bruk systemd, noe som har medført noen mindre regeljusteringer. Avhengig av hvordan systemet er konfigurert, må du kanskje søke etter kjernedumper.