Я настроил свою среду на создание дампов ядра для всего, что дает сбой, однако, когда я запускаю программу с установленным SUID для другого пользователя, а не для исполняющего пользователя, он не создает дамп ядра. Есть идеи, почему это может быть? Я не смог найти его в Интернете, я думаю, что это какая-то функция безопасности, но я бы хотел отключить его ...
Проблема:
$ 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)
Редактировать: чтобы сделать его максимально безопасным, теперь у меня есть следующий скрипт для настройки среды:
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
Теперь все, что осталось сделать, это добавить ACL в / var / coredumps, чтобы пользователи могли только добавлять файлы, не изменять и не читать их никогда. Единственное сокращение состоит в том, что у меня все еще была бы проблема с приложениями chroot, которые нуждались бы в bind mount
или что-то в этом роде.