linux capabilities 本身不直接提供“转储文件保护”功能,但可通过合理配置 capabilities 配合内核参数与文件系统机制,有效限制进程生成、读取或泄露核心转储的能力。

Linux Capabilities 本身不直接提供“转储文件保护”功能,但可通过合理配置 capabilities 配合内核参数与文件系统机制,有效限制进程生成、读取或泄露核心转储(core dump)的能力。关键在于控制谁有权限触发转储、谁有权写入转储文件、以及转储内容是否可被非授权进程访问。
控制核心转储的触发权限
普通进程崩溃时能否生成 core dump,取决于其 CAP_SYS_RESOURCE 能力和内核限制策略。该能力允许进程绕过资源限制(如 RLIMIT_CORE),从而可能生成大体积转储文件。若服务无需调试支持,应显式移除该能力:
- 运行前通过
setcap -r /path/to/binary清除所有文件 capability - 启动时用
capsh --drop=cap_sys_resource -- -c "./app"临时禁用 - 容器场景下,在
docker run中避免--cap-add=SYS_RESOURCE
禁止非特权进程生成转储文件
内核参数 fs.suid_dumpable 是第一道防线,它控制 setuid/setgid 程序崩溃时是否允许生成 core dump:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
fs.suid_dumpable = 0(默认推荐):禁止所有 setuid/setgid 进程转储,大幅降低提权后内存信息泄露风险 -
fs.suid_dumpable = 1:仅允许相同 uid/gid 的进程读取转储(需配合/proc/sys/kernel/core_pattern安全配置) - 永久生效:写入
/etc/sysctl.conf并执行sysctl -p
安全配置 core_pattern 与转储路径
转储文件位置和命名由 /proc/sys/kernel/core_pattern 决定。不当配置可能导致转储写入全局可写目录或暴露敏感路径:
- 避免使用绝对路径如
/tmp/core.%e.%p—— /tmp 可被任意用户遍历 - 推荐使用管道重定向到专用守护进程,例如:
|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %e(systemd 环境) - 若必须写文件,指定严格权限目录:
/var/crash/core.%e.%p,并确保该目录属主为 root:root、权限为0700
限制转储文件的访问权限
即使转储已生成,也可通过文件 capability 和扩展属性进一步收紧访问:
- 对核心转储处理工具(如
systemd-coredump)授予最小能力:setcap cap_dac_override,cap_sys_ptrace+ep /usr/lib/systemd/systemd-coredump - 禁止普通用户读取转储目录:使用
chown root:root /var/crash && chmod 0700 /var/crash - 启用内核
kernel.core_dump_filter掩码(如0x33)跳过映射的私有数据段和 VDSO,减少敏感内存内容落入转储










