Postavljanje Linux Core lokacije ispisa

Postavljanje Linux Core Lokacije Ispisa



Što je 'Core Dump' u Linuxu?

Kada se proces neočekivano prekine, često za sobom ostavlja 'izmet jezgre' u vašem sustavu. Postoji relevantna poruka koja je uključena u ovo. Jezgra služi kao alat za ispravljanje pogrešaka i slika je memorije koja također uključuje informacije o ispravljanju pogrešaka. Ako ste korisnik koji ne želi debugirati program, možete jednostavno izbrisati jezgru:

$ rm jezgra

Također ga možete ostaviti netaknutim, jer se stara jezgra prebriše ako se ikad izbaci nova. Također možete deaktivirati ispis jezgre sljedećom naredbom:







$ smanjenje -c 0

Možemo generirati jezgrene ispise na zahtjev (na primjer, putem programa za ispravljanje pogrešaka) ili se mogu proizvesti automatski nakon prekida. Kernel pokreće izbacivanje jezgre kao posljedicu naglog izlaska programa. Oni se mogu poslati nekom drugom programu (kao što je systemd-coredump) za dodatne operacije.



Kao što to obično biva, postoji kompromis između prikupljanja podataka za bolju stabilnost i rješavanje problema i rizika od otkrivanja osjetljivih informacija iz podataka za otklanjanje pogrešaka.



Što ćemo pokrivati?

U ovom ćemo članku vidjeti kako postaviti lokaciju izvataka jezgre na Ubuntu 20.04 OS-u. Počnimo sada.





Generiranje Core Dump-a

Pogledajmo najprije kako možemo generirati dump jezgre. Za to koristimo Linux kill naredbu. Prvo pronađite PID procesa i zatim pošaljite signal za ukidanje. Na primjer, pokrenimo proces spavanja i zatim ga ubijmo njegovim PID-om:

$ spavati 500

$ ubiti -s SIGTRAP $ ( zahvat spavati )



Sada kada ste naučili kako generirati ispis jezgre, možete ga koristiti u sljedećim odjeljcima.

Gdje su otišli?

Datoteka ispisa jezgre prema zadanim se postavkama naziva core.pid i stvara se u radnom direktoriju aplikacije. Ovdje je pid ID procesa.

Pomoću alata ulimit možete dobiti ili promijeniti ograničenja sistemskih resursa za trenutnu ljusku i sve ljuske koje dolaze nakon nje. Da biste provjerili ili konfigurirali ograničenje veličine osnovne datoteke, upotrijebite sljedeću naredbu:

$ smanjenje -c

Kako biste izbjegli ograničavanje ili skraćivanje osnovne datoteke, provjerite je li ograničenje globalno postavljeno na 'neograničeno' [1]. To se može učiniti u /etc/security/limits.conf dodavanjem sljedećeg retka:

korijen - jezgra neograničeno

* - jezgra neograničena

Sada se jednostavno odjavite i ponovno prijavite za ograničenja koja će se primijeniti na vašu sesiju.

Prilagođavanje lokacije Core Dumpa

Naredba “sysctl kernel.core_pattern” ili “/proc/sys/kernel/core_pattern” obično se koristi za postavljanje lokacije na koju idu ispisi jezgre.

Unesite sljedeću naredbu da vidite postavke za trenutni uzorak jezgre:

$ mačka / proc / sustav / zrno / uzorak_jezgre

Obično ćete ovdje pronaći zadanu vrijednost navedenu kao 'core'.

Korištenje “/proc/sys/kernel/core_pattern” za postavljanje lokacije Core Dump

Privremeno preusmjerimo dumpove jezgre na novu lokaciju, recimo /tmp/dumps/core, koristeći datoteku “/proc/sys/kernel/core_pattern” [2] [3]. Sada slijedite sljedeće korake:

Korak 1 . Prvo napravite direktorij za pohranjivanje dumpova jezgre:

$ mkdir -str / tmp / istovariti / jezgre /

Korak 2 . Dajte potrebna dopuštenja ovom direktoriju:

$ chmod a+x / tmp / istovariti / jezgre /

3. korak . Sada privremeno postavite stazu dumpa jezgre:

$ jeka '/tmp/dump/cores/core' | sudo tee / proc / sustav / zrno / uzorak_jezgre

Opet, globalno postavite ulimit na neograničeno.

Ovdje možemo dodati neke druge informacije nazivu datoteke kao što je prikazano u nastavku:

$ jeka '/tmp/dump/cores/core_%e.%p_%t' | sudo tee / proc / sustav / zrno / uzorak_jezgre

Svaki parametar koji se ovdje koristi može se definirati na sljedeći način:

% i: za izvršni datoteka Ime

% p: za postupak iskaznica ili pid.

% t: za dodavanje vremenske oznake

Korak 4 . Zatim moramo promijeniti datoteku “/etc/sysctl.conf” kako bismo trajno primijenili prethodne postavke. Otvori ovu datoteku:

$ sudo nano / itd / sysctl.conf

Sada ovoj datoteci dodajte sljedeći redak:

kernel.core_pattern = / tmp / istovariti / jezgre / jezgra

Također, umjesto ove linije, možete dodati ovo:

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

To je sve što trebamo učiniti. Sada generirajte ispis jezgre kao što je spomenuto u odjeljku 'Generiranje ispisa jezgre'. Nakon toga možemo provjeriti je li naša jezgrena datoteka generirana ili ne:

$ ls -l / tmp / istovariti / jezgre /

Korištenje naredbe “Sysctl” za postavljanje lokacije ispisa jezgre

Kao što je ranije spomenuto, također možemo koristiti naredbu sysctl za istu svrhu. Promijenimo lokaciju jezgrenog dumpa i format jezgrene datoteke:

Korak 1 . Napravite novi direktorij i dajte potrebna dopuštenja:

$ mkdir -str / tmp / moje deponije

$ chmod a+rwx / tmp / moje deponije

Korak 2 . Sada samo pokrenite sljedeću naredbu:

$ sudo sysctl -u kernel.core_pattern= / tmp / moje deponije / jezgra_ % i. % p_ % t

3. korak . Sada, opet, generirajte core dump kao što smo to učinili ranije. Nakon toga provjerite je li jezgrena datoteka generirana ili ne:

$ ls -l / tmp / moje deponije /

Na Ubuntu sustavima, ispisi jezgre često se šalju Appportu. Za sustave koji se temelje na Red Hatu, može se proslijediti alatu za automatsko izvješćivanje o greškama (ABRT). U početku sam se suočio s problemom u konfiguriranju lokacije jezgrenog dumpa, pa sam morao potpuno onemogućiti Appport na Ubuntu 20.04. Možda to može biti slučaj i s Red Hatom i drugima.

Zaključak

U ovom smo članku vidjeli kako možemo prilagoditi lokaciju odlagališta jezgre na Ubuntu 20.04 OS-u. Core dumpovi mogu vam pomoći da shvatite što nije u redu, ali su užasni zbog curenja osjetljivih podataka. Ispise jezgre treba onemogućiti kad god nisu potrebni i omogućiti ih samo kada su apsolutno neophodni. U takvoj situaciji provjerite jesu li datoteke sigurno pohranjene tako da obični korisnici ne mogu pristupiti podacima. Nadalje, bez obzira na vašu odluku, uvijek biste trebali testirati svoju konfiguraciju kako biste bili sigurni da radi kako treba.

Različiti operativni sustavi različito postupaju s ispisima jezgre i zadanim konfiguracijama. U posljednje vrijeme većina Linux sustava usvaja systemd, što je dovelo do nekih manjih prilagodbi pravila. Ovisno o tome kako je vaš sustav konfiguriran, možda ćete trebati pretražiti dumpove jezgre.