限制核心转储本质是防止敏感内存数据泄露,需在安全与调试间平衡;可通过修改/proc/sys/kernel/core_pattern重定向至受限目录、设为/dev/null禁用,或用ulimit-limitcore=0做进程级控制。

限制系统核心转储(core dump)生成,本质是防止程序崩溃时将内存镜像(含密码、密钥、令牌等敏感数据)写入磁盘。关键不在于完全禁用,而是在安全与调试需求间取得平衡。
检查当前 core dump 策略
Linux 使用 /proc/sys/kernel/core_pattern 控制转储行为。执行以下命令查看现状:
cat /proc/sys/kernel/core_pattern
常见输出包括:
• /var/lib/systemd/coredump(systemd-coredump 默认路径)
• |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h(通过管道交由 systemd 处理)
• /dev/null(丢弃)或空值(禁用)
安全启用方式:重定向到受控位置 + 权限隔离
若需保留调试能力但规避敏感数据泄露,推荐以下组合策略:
- 设置专用目录,仅 root 可读写:
mkdir -p /var/log/coredumps && chmod 700 /var/log/coredumps
- 修改 core_pattern 指向该目录并添加 PID 时间戳:
echo "/var/log/coredumps/core.%e.%p.%t" | sudo tee /proc/sys/kernel/core_pattern
- 永久生效:在 /etc/sysctl.conf 中添加
kernel.core_pattern = /var/log/coredumps/core.%e.%p.%t
彻底禁用(生产环境高敏场景适用)
对无调试需求的服务(如网关、认证服务),直接禁用最稳妥:
- 临时禁用(重启失效):
echo "/dev/null" | sudo tee /proc/sys/kernel/core_pattern
- 全局禁用(所有用户):
sudo sysctl -w kernel.core_pattern=/dev/null
- 用户级限制(更细粒度):
在启动脚本或服务单元中加入:ulimit -c 0
(限制单进程 core 文件大小为 0)
配合 systemd 服务做精细化控制
使用 systemd 托管的服务可单独配置,不影响全局策略:
- 编辑服务文件(如 /etc/systemd/system/myapp.service):
[Service]<br>LimitCORE=0
- 重载配置并重启服务:
sudo systemctl daemon-reload && sudo systemctl restart myapp
- 验证是否生效:
systemctl show myapp | grep LimitCORE
应返回 LimitCORE=0










