1. In CentOS/RHEL la creazione del file core è disabilitata per impostazione predefinita. Per abilitarlo, esegui il comando seguente:
# ulimit -S -c unlimited > /dev/null 2>&1
quindi esegui il programma nello stesso ambiente della shell.
2. Per abilitarlo in modo permanente, segui i passaggi seguenti:
– Modifica /etc/security/limits.conf .
# vi /etc/security/limits.conf * soft core unlimited
Il "* ' viene utilizzato per abilitare la dimensione di coredump a illimitata per tutti gli utenti.
– Modifica /etc/sysctl.conf per aggiungere il percorso del core dump e il formato file del file core. Per impostazione predefinita, il file principale verrà generato nella directory di lavoro del processo in esecuzione.
# vi /etc/sysctl.conf kernel.core_pattern = /var/crash/core.%e.%p.%h.%t
Qui,
/var/crash è il percorso e core.%e.%p.%h.%t è il formato del file, dove:
%e – nome file eseguibile.
%p – PID del processo di cui è stato eseguito il dumping.
%t – tempo di scaricamento (secondi dalle ore 0:00 del 1 gennaio 1970).
%h – hostname (lo stesso di 'nodename' restituito da uname(2)).
Assicurati che i processi dispongano dell'autorizzazione corretta per la directory configurata (ad es. /var/carsh/).
– Imposta fs.suid_dumpable per binari setuid o altrimenti protetti/contaminati.
# vi /etc/sysctl.conf fs.suid_dumpable = 2
Di seguito è riportato il significato di ogni valore predefinito:
- 0 – (predefinito) :comportamento tradizionale. Qualsiasi processo che ha modificato i livelli di privilegio o viene eseguito solo non verrà scaricato.
- 1 – (debug) :tutti i processi eseguono il dump del core quando possibile. Il core dump è di proprietà dell'utente corrente e non viene applicata alcuna protezione. Questo è inteso solo per situazioni di debug del sistema.
- 2 – (suidsafe) :qualsiasi binario che normalmente non viene scaricato viene scaricato in modo leggibile solo da root. Ciò consente all'utente finale di rimuovere tale dump ma non di accedervi direttamente. Per motivi di sicurezza, i core dump in questa modalità non sovrascriveranno l'un l'altro o altri file. Questa modalità è appropriata quando gli amministratori tentano di eseguire il debug dei problemi in un ambiente normale.
– Carica le impostazioni usando il comando sysctl di seguito dopo aver modificato /etc/sysctl.conf di seguito:
# sysctl -p
Per raccogliere i core dump dai pacchetti non firmati, imposta OpenGPGCheck =no in /etc/abrt/abrt-action-save-package-data.conf . Per raccogliere i core dump dal software non compresso, imposta ProcessUnpackaged =yes in /etc/abrt/abrt-action-save-package-data.conf
– Riavvia il demone abrtd – come root – per rendere effettive le nuove impostazioni.
# service abrtd restart # service abrt-ccpp restart
In CentOS/RHEL 7:
# systemctl start abrtd.service # systemctl start abrt-ccpp.service
Ora, CentOS/RHEL è pronto per generare file di dump principali quando i processi vengono abbandonati con segfault.
Nota :I daemon e le funzionalità forniti da Red Hat Automatic Bug Reporting Tool (ABRT) non sono supportati con CentOS/RHEL. I pacchetti ABRT e i file associati, come libreport, sono inclusi nella distribuzione per soddisfare le dipendenze dei pacchetti, ma le funzionalità all'interno di questi pacchetti non sono supportate.