Setarea Linux Core a locației de descărcare

Setarea Linux Core A Locatiei De Descarcare



Ce este „Core Dump” în Linux?

Când un proces iese în mod neașteptat, deseori lasă în urmă o „dump de bază” în sistemul dumneavoastră. Există un mesaj relevant care este inclus cu acesta. Un nucleu servește ca instrument de depanare și este o imagine a memoriei care include și informațiile de depanare. Dacă sunteți un utilizator care nu dorește să depaneze un program, puteți doar să ștergeți nucleul:

$ rm miez

De asemenea, îl puteți lăsa neatins, deoarece vechiul nucleu este suprascris dacă unul nou este vreodată aruncat. De asemenea, puteți dezactiva descărcarea de bază cu următoarea comandă:







$ scădea -c 0

Putem genera depozitele de bază la cerere (de exemplu, printr-un depanator) sau pot fi produse automat la terminare. Nucleul inițiază dumpurile de bază ca o consecință a ieșirii bruște a unui program. Acestea pot fi trimise la un alt program (cum ar fi systemd-coredump) pentru operații suplimentare.



După cum este de obicei cazul, există un compromis între colectarea datelor pentru o mai bună stabilitate și depanare și riscul de a dezvălui informațiile sensibile din datele de depanare.



Ce vom acoperi?

În acest articol, vom vedea cum să setăm locația depozitelor de bază pe sistemul de operare Ubuntu 20.04. Să începem acum.





Generarea unui Core Dump

Să vedem mai întâi cum putem genera un dump de bază. Pentru aceasta, folosim comanda Linux kill. Mai întâi, găsiți PID-ul unui proces și apoi trimiteți un semnal de ucidere. De exemplu, să începem procesul de somn și apoi să-l omorâm cu PID-ul său:

$ dormi 500

$ ucide -s SIGTRAP $ ( prindere dormi )



Acum că ați învățat cum să generați un dump de bază, îl puteți utiliza în următoarele secțiuni ulterioare.

Unde merg?

Fișierul core dump se numește core.pid în mod implicit și este creat în directorul de lucru al aplicației. Aici, pid este id-ul procesului.

Cu instrumentul ulimit, puteți obține sau modifica limitele resurselor sistemului pentru shell-ul actual și orice shell-uri care vin după acesta. Pentru a verifica sau configura limita de dimensiune a fișierului de bază, utilizați următoarea comandă:

$ scădea -c

Pentru a evita delimitarea sau trunchierea fișierului de bază, asigurați-vă că limita este setată global la „nelimitat” [1]. Acest lucru se poate face în /etc/security/limits.conf adăugând următoarea linie:

rădăcină - miez nelimitat

* - nucleu nelimitat

Acum, pur și simplu deconectați-vă și conectați-vă din nou pentru ca limitele să fie aplicate sesiunii dvs.

Personalizarea locației Core Dump-ului

Comanda „sysctl kernel.core_pattern” sau „/proc/sys/kernel/core_pattern” este folosită în mod normal pentru a seta locația în care merg depozitele de bază.

Introduceți următoarea comandă pentru a vedea setările pentru modelul de bază curent:

$ pisică / proc / sys / nucleu / core_pattern

De obicei, veți găsi valoarea implicită listată ca „core” aici.

Folosind „/proc/sys/kernel/core_pattern” pentru a seta locația Core Dump

Să redirecționăm temporar depozitele de bază într-o locație nouă, să spunem /tmp/dumps/core, folosind fișierul „/proc/sys/kernel/core_pattern” [2] [3]. Acum, urmați următorii pași:

Pasul 1 . Mai întâi, faceți un director pentru a stoca depozitele de bază:

$ mkdir -p / tmp / haldă / miezuri /

Pasul 2 . Acordați permisiunile necesare acestui director:

$ chmod a+x / tmp / haldă / miezuri /

Pasul 3 . Acum, setați temporar calea de descărcare de bază:

$ ecou „/tmp/dump/cores/core” | sudo tricou / proc / sys / nucleu / core_pattern

Din nou, setați global ulimitul la nelimitat.

Aici, putem adăuga alte informații la numele fișierului, așa cum se arată în continuare:

$ ecou „/tmp/dump/cores/core_%e.%p_%t” | sudo tricou / proc / sys / nucleu / core_pattern

Fiecare parametru care este utilizat aici poate fi definit după cum urmează:

% și: pentru executabil fişier Nume

% p: pentru proces id sau pid.

% t: pentru adăugarea unui marcaj de timp

Pasul 4 . În continuare, trebuie să schimbăm fișierul „/etc/sysctl.conf” pentru a aplica permanent setările anterioare. Deschideți acest fișier:

$ sudo nano / etc / sysctl.conf

Acum, adăugați următoarea linie la acest fișier:

kernel.core_pattern = / tmp / haldă / miezuri / miez

De asemenea, în loc de această linie, puteți adăuga aceasta:

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

Asta este tot ce trebuie să facem. Acum, generați o descărcare de bază, așa cum se menționează în secțiunea „Generarea unui depozit de bază”. După aceasta, putem verifica dacă fișierul nostru de bază este generat sau nu:

$ ls -l / tmp / haldă / miezuri /

Folosind comanda „Sysctl” pentru a seta locația Core Dump

După cum am menționat mai devreme, putem folosi și comanda sysctl în același scop. Să modificăm locația de descărcare de bază și formatul fișierului de bază:

Pasul 1 . Creați un director nou și acordați permisiunile necesare:

$ mkdir -p / tmp / mydumps

$ chmod a+rwx / tmp / mydumps

Pasul 2 . Acum, rulați următoarea comandă:

$ sudo sysctl -în kernel.core_pattern= / tmp / mydumps / core_ % și. % p_ % t

Pasul 3 . Acum, din nou, generați memoria centrală așa cum am făcut mai devreme. După aceasta, verificați dacă fișierul de bază este generat sau nu:

$ ls -l / tmp / mydumps /

Pe sistemele Ubuntu, depozitele de bază sunt adesea trimise la Apport. Pentru sistemele bazate pe Red Hat, acesta poate fi redirecționat către Instrumentul de raportare automată a erorilor (ABRT). Inițial, m-am confruntat cu o problemă în configurarea locației de descărcare de bază, așa că a trebuit să dezactivez complet Apport pe Ubuntu 20.04. Poate că acesta poate fi și cazul Red Hat și alții.

Concluzie

În acest articol, am văzut cum putem personaliza locația depozitelor de bază pe sistemul de operare Ubuntu 20.04. Core-dump-urile vă pot ajuta să aflați ce este în neregulă, dar sunt groaznice pentru scurgeri de date sensibile. Core-dump-urile ar trebui să fie dezactivate ori de câte ori nu sunt necesare și activate numai atunci când este absolut necesar. Într-o astfel de situație, confirmați că fișierele sunt stocate în siguranță, astfel încât utilizatorii obișnuiți să nu poată accesa datele. În plus, indiferent de decizia dvs., ar trebui să vă testați întotdeauna configurația pentru a vă asigura că funcționează conform intenției.

Dumpurile de bază și configurațiile implicite sunt gestionate diferit de diferite sisteme de operare. În ultima vreme, majoritatea sistemelor Linux au adoptat systemd, ceea ce a adus unele ajustări minore ale regulilor. În funcție de modul în care este configurat sistemul dvs., s-ar putea să fie necesar să căutați depozite de bază.