J'ai configuré mon environnement pour créer un vidage de mémoire de tout ce qui se bloque, mais lorsque j'exécute un programme avec SUID défini sur un utilisateur différent de l'utilisateur exécutant, il ne crée pas de vidage de mémoire. Une idée de pourquoi cela pourrait être? Je ne l'ai trouvé nulle part sur le Web, je pense que c'est une sorte de fonctionnalité de sécurité, mais j'aimerais la désactiver ...
Problème:
$ 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)
Edit: Pour le faire fonctionner aussi sécurisé que possible, j'ai maintenant le script suivant pour configurer l'environnement:
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
Maintenant, tout ce qui reste à faire est d'ajouter ACL à / var / coredumps pour que les utilisateurs puissent seulement ajouter des fichiers et ne plus les modifier ni les lire. La seule réduction, c'est que j'aurais toujours un problème avec les applications chrootées qui auraient besoin d'un bind mount
ou quelque chose comme ça.