czwartek, 5 maja 2016

Tuning: wyłączamy core-dump

W przypadku nieoczekiwanego wyłączenia się programu, automatycznie uruchamiany jest proces coredump, który powoduje zrzut różnych informacji, które programistom mogą pomóc w rozwiązaniu problemu. Niemniej jednak, dla zwykłego użytkownika jest to proces zbyteczny, zajmuje miejsce, a nadto w owych zrzutach mogą być różne informacje, do których niekoniecznie chcielibyśmy, by ktokolwiek miał dostęp (co prawda są one niby czytelne wyłącznie dla roota, jednakże nie jest to w zasadzie żadne zabezpieczenie przed osobą, która potrafi się do partycji głównej "dobrać", nawet nieznając hasła root).
Z punktu widzenia zwykłego użytkownika usługa ta może być po prostu zbędna.
Wyłączenie można przeprowadzić w zasadzie na dwu poziomach. W przestrzeni użytkownika (userspace) oraz pozostałej. Wyłączenie pierwszej powoduje, że programy uruchamiane w userspace nie będą dokonywały zrzutów, jeśli niespodziewanie się wyłączą. Wyłączenie również drugiej powoduje, że coredump jest wyłączone dla wszystkich sytuacji.
Pamiętajmy jednak, że wyłączając coredump możemy jednocześnie pozbawić się możliwości usunięcia jakichś awarii związanych z oprogramowaniem.

1. Wyłączenie coredump w userspace
Dokonujemy edycji pliku /etc/systemd/coredump.conf, odnajdujemy linijkę, którą domyślnie ma postać:
# Storage=external
i zmieniamy na:
Storage=none
Teraz jeszcze musimy o tym poinformować systemd:
# systemctl daemon-reload

2. Zerujemy przestrzeń dyskową dla zrzutów
Edytujemy plik /etc/security/limits.conf i dopisujemy:
* hard core 0
pod sekcją, która wygląda tak:
#<domain>      <type>  <item>         <value>

3. Zmieniamy ustawienia sysctl
Edytujemy bądź tworzymy plik: /etc/sysctl.conf i dopisujemy w nim:
fs.suid_dumpable = 0
Można też przekompilować kernel i w ogóle wyłączyć taką możliwość.