【发布时间】:2012-10-31 20:06:44
【问题描述】:
我正在编写一个生成子进程的程序。出于安全原因,我想限制这些进程可以做什么。我知道来自程序外部的安全措施,例如chroot 或ulimit,但我想做的还不止这些。我想限制子进程完成的系统调用(例如防止调用open()、fork() 等)。有没有办法做到这一点?最理想的情况是,被阻塞的系统调用应该返回一个错误,但如果这不可能,那么终止进程也是好的。
我想它可以通过 ptrace() 完成,但从手册页中我真的不明白如何将它用于此目的。
【问题讨论】:
-
你可能想要 SELinux en.wikipedia.org/wiki/Security-Enhanced_Linux 我不是 100% 确定,但它应该有一个可编程的 API。
-
prctl(PR_SET_SECCOMP, ...)可能是您想要的。这与“不允许系统调用”非常接近。 -
prctl(PR_SET_SECCOMP, ...)的问题是它也阻塞了exec()调用,所以它对我来说是不可用的。
标签: c linux security system-calls