Hva er "kjernedump" i Linux?
Når en prosess uventet kommer ut, etterlater den ofte en "kjernedump" i systemet ditt. Det er en relevant melding som er inkludert i dette. En kjerne fungerer som et feilsøkingsverktøy og er et bilde av minne som også inkluderer feilsøkingsinformasjon. Hvis du er en bruker som ikke vil feilsøke et program, kan du bare slette kjernen:
$ RM Core
Du kan også la den være urørt, da den gamle kjernen blir overskrevet hvis en ny noen gang blir dumpet. Du kan også deaktivere kjernen som dumper med følgende kommando:
$ ulimit -c 0
Vi kan generere kjernedumpene på forespørsel (for eksempel via en feilsøking), eller de kan produseres automatisk ved oppsigelse. Kjernen initierer kjernedumps som en konsekvens av programmets brå avkjørsel. Disse kan sendes til et annet program (for eksempel SystemD-Coredump) for ytterligere operasjoner.
Som vanligvis er tilfelle, 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 setter plasseringen av kjernedumps på Ubuntu 20.04 OS. La oss komme i gang nå.
Generere en kjernedump
La oss først se hvordan vi kan generere en kjernedump. For dette bruker vi Linux Kill -kommandoen. Før først PID -en i en prosess og send et drapssignal. La oss for eksempel starte søvnprosessen og deretter drepe den med PID -en:
$ søvn 500
$ Kill -S Sigtrap $ (Pgrep Sleep)
Nå som du lærte hvordan du genererer en kjernedump, kan du bruke den i de følgende påfølgende seksjonene.
Hvor går de?
Kjernedump -filen heter Core.PID som standard og opprettes i arbeidskatalogen for applikasjonen. Her er PID prosess -ID.
Med Ulimit -verktøyet kan du få eller endre systemressursgrensene for det nåværende skallet og eventuelle skjell som kommer etter det. For å bekrefte eller konfigurere kjernefilstørrelsesgrensen, bruk følgende kommando:
$ ulimit -c
For å unngå å avgrense eller avkortes kjernefilen, må du sørge for at grensen er globalt satt til "ubegrenset" [1]. Dette kan gjøres i/etc/sikkerhet/grenser.Conf ved å legge til følgende linje:
ROOT - Core Unlimited
* - Core Unlimited
Nå, bare logg ut og logg inn for at grensene skal brukes på økten din.
Tilpasse plasseringen av kjernedumpen
"Sysctl -kjernen.core_pattern ”-kommandoen eller“/proc/sys/kjerne/core_pattern ”brukes normalt til å stille inn stedet der kjernedumpene går.
Skriv inn følgende kommando for å se innstillingene for gjeldende kjernemønster:
$ katt/proc/sys/kjerne/core_pattern
Vanligvis finner du standardverdien som er oppført som "kjerne" her.
Bruke “/proc/sys/kjerne/core_pattern” for å stille kjernen til kjernen
La oss omdirigere kjernedumpene midlertidig til et nytt sted, si/tmp/dumps/core, ved å bruke filen “/proc/sys/kjerne/core_pattern” [2] [3]. Følg nå følgende trinn:
Trinn 1. Først må du lage en katalog for å lagre kjernedumpene:
$ mkdir -p/tmp/dump/kjerner/
Steg 2. Gi de nødvendige tillatelsene til denne katalogen:
$ chMod a+x/tmp/dump/kjerner/
Trinn 3. Nå, midlertidig setter kjernedumpstien:
$ ekko '/tmp/dump/cores/core' | sudo tee/proc/sys/kjerne/core_pattern
Igjen, globalt satte ulimit til ubegrenset.
Her kan vi legge til noe annet informasjon til navnet på filen som vist i følgende:
$ ekko '/tmp/dump/kjerner/core_%e.%P_%T '| sudo tee/proc/sys/kjerne/core_pattern
Hver parameter som brukes her kan defineres som følger:
%E: For kjørbart filnavn
%P: For prosess -ID eller PID.
%T: For å legge til en tidsstempel
Trinn 4. Deretter må vi endre “/etc/sysctl.Conf ”-filen for å bruke de forrige innstillingene permanent. Åpne denne filen:
$ sudo nano /etc /sysctl.konf
Legg nå følgende linje i denne filen:
kjerne.core_pattern =/tmp/dump/kjerner/core
I stedet for denne linjen kan du også legge til dette:
kjerne.core_pattern = '/tmp/dump/cores/core_%e.%p_%t '
Det er alt vi trenger å gjøre. Generer nå en kjernedump som nevnt i delen "Genererer en kjernedump". Etter dette kan vi sjekke om kjernefilen vår er generert eller ikke:
$ ls -l/tmp/dump/kjerner/
Bruke “SYSCTL” -kommando for å angi kjernedumpens plassering
Som nevnt tidligere, kan vi også bruke SYSCTL -kommandoen for samme formål. La oss endre kjernedumpens plassering og formatet til kjernefilen:
Trinn 1. Lag en ny katalog og gi de nødvendige tillatelsene:
$ mkdir -p /tmp /mydumps
$ chMod a+rwx /tmp /mydumps
Steg 2. Nå, bare kjør følgende kommando:
$ sudo sysctl -w kjerne.core_pattern =/tmp/mydumps/core_%e.%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 blir kjernedumper ofte sendt til Apport. For Red Hat-baserte systemer kan det videresendes til det automatiske feilrapporteringsverktøyet (ABRT). Til å begynne med sto jeg overfor et problem med å konfigurere kjernedumpens plassering, 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 forferdelig for å lekke sensitive data. Kjernedumper skal deaktiveres når de ikke er påkrevd, og bare aktivert når det er absolutt nødvendig. I en slik situasjon, bekreft at filene er sikkert lagret slik at de vanlige brukerne ikke får tilgang til dataene. Videre, uansett beslutning, bør du alltid teste konfigurasjonen for å sikre at den fungerer som tiltenkt.
Kjernedumper og standardkonfigurasjoner håndteres annerledes av forskjellige operativsystemer. I nyere tid har de fleste Linux -systemer tatt i bruk SystemD, noe som har ført til noen mindre regeljusteringer. Avhengig av hvordan systemet ditt er konfigurert, kan det hende du må søke etter kjernedumps.