我设置环境以创建所有崩溃的核心转储,但是,当我在与执行用户不同的用户上运行设置了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的应用程序出现问题,这些问题需要a bind mount
或类似的东西。