Eu configurei meu ambiente para criar um core dump de tudo o que falha, no entanto, quando executo um programa com o SUID definido em um usuário diferente do usuário em execução, ele não cria um core dump. Alguma ideia de por que isso pode ser? Não consegui encontrá-lo em nenhum lugar da Web, acho que é algum tipo de recurso de segurança, mas gostaria de desativá-lo ...
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 torná-lo o mais seguro possível, agora tenho o seguinte script para configurar o 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
Agora, tudo o que resta a fazer é adicionar a ACL a / var / coredumps, para que os usuários possam adicionar apenas arquivos e não modificá-los nem lê-los novamente. O único tamanho reduzido é que eu ainda teria um problema com aplicativos chrootados que precisaria de bind mount
algo assim.