Configuré mi entorno para crear un volcado de núcleo de todo lo que falla, sin embargo, cuando ejecuto un programa con SUID configurado en un usuario diferente que el usuario ejecutor, no crea un volcado de núcleo. ¿Alguna idea de por qué podría ser esto? No pude encontrarlo en ninguna parte de la web, creo que es algún tipo de característica de seguridad, pero me gustaría deshabilitarlo ...
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)
Editar: para que funcione de la manera más segura posible, ahora tengo el siguiente script para configurar el entorno:
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
Ahora todo lo que queda por hacer es agregar ACL a / var / coredumps para que los usuarios solo puedan agregar archivos y no modificarlos ni leerlos nunca más. La única reducción es que todavía tendría un problema con las aplicaciones chroot que necesitarían bind mount
algo o algo así.