在 Linux 中,可通过以下几种机制限制进程执行危险系统调用(如 reboot、unlink 删除文件等):
1. Seccomp(推荐)
Seccomp 能白名单式限制进程可调用的系统调用。例如,用 seccomp-bpf 或工具如 systemd、Docker、Firejail 设置规则,禁止 reboot、kill、unlink 等 syscall。开发者也可在程序中用 libseccomp 编写策略。
2. Capabilities(能力)
Linux 将 root 权限拆分为细粒度“能力”。通过 capsh 或 systemd 去掉进程的危险能力,如:
CAP_SYS_BOOT(禁止 reboot)
CAP_DAC_OVERRIDE(禁止绕过文件权限删除)命令示例:
capsh --drop=cap_sys_boot,cap_dac_override -- -c "your_command"
3. 沙箱工具(简单易用)
Firejail:用配置文件禁用危险 syscall 或能力,例如 firejail --noprofile --seccomp your_app。
Bubblewrap:配合 --ro-bind 只读挂载、--dev 限制设备,间接防止删除或重启。
网友回复


