我正在编写一个生成子进程的程序。出于安全原因,我想限制这些进程的活动范围。我知道一些可以在程序外部实现的安全措施,比如
我猜这可以用
chroot
或者ulimit
,但我还想做得更好。我想限制子进程所能调用的系统调用(例如阻止对open()
、fork()
等函数的调用)。有什么方法可以实现吗?最好是被阻止的系统调用返回一个错误信息,但如果不可能的话,终止进程也是可以接受的。我猜这可以用
ptrace()
来实现,但从手册页上我并不真正理解如何将其用于此目的。
prctl(PR_SET_SECCOMP, ...)
可能是你需要的。这是最接近“禁止系统调用”的方法。 - Damonprctl(PR_SET_SECCOMP, ...)
的问题在于它也会阻止exec()
调用,因此对我来说是无法使用的。 - petersohn