Configuro il mio ambiente per creare un dump principale di tutto ciò che si arresta in modo anomalo, tuttavia quando eseguo un programma con SUID impostato su un utente diverso rispetto all'utente che esegue non crea un dump principale. Qualche idea sul perché questo potrebbe essere? Non sono riuscito a trovarlo da nessuna parte sul Web, penso che sia una sorta di funzione di sicurezza, ma vorrei disabilitarlo ...
Problema:
$ cd /tmp
$ cat /etc/security/limits.conf | grep core
* - core unlimited
root - core unlimited
$ ls -l ohai
-rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai
$ ./ohai
...
Floating point exception
$ sudo -i
# ./ohai
...
Floating point exception (core dumped)
# chmod -s ohai
# exit
$ ./ohai
...
Floating point exception (core dumped)
Modifica: per farlo funzionare nel modo più sicuro possibile ora ho il seguente script per configurare l'ambiente:
mkdir -p /var/coredumps/
chown root:adm /var/coredumps/
chmod 772 /var/coredumps/
echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf
echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf
echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf
echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf
Ora non resta che aggiungere ACL a / var / coredumps in modo che gli utenti possano solo aggiungere file e non modificarli né leggerli mai più. L'unico aspetto negativo è che avrei ancora un problema con le applicazioni chroot che avrebbero bisogno di bind mount
qualcosa del genere.