ptrace似乎是最明显的工具,但除此之外……
util-linux
[-ng]有一个命令
unshare,该命令使用内核的
clone/
unshare接口。如果通过
unshare-n(或
clone(CLONE_NEWNET))运行新进程,则它创建的任何网络套接字都在不同的名称空间中。那不能解决内核资源的问题,但是可以对进程进行沙箱处理。
Linux内核还支持的Seccomp,用输入模式
prctl(PR_SET_SECCOMP,1),防止过程(当然,螺纹,真的)从调用任何系统调用以外
read,
write,
exit,和
sigreturn。这是一个非常有效的沙箱,但是很难与未修改的代码一起使用。
您可以定义一个SELinux的域,其不允许
socket/
bind的/
etc。调用,并动态转换为该类型。(显然)这需要具有积极实施SELinux策略的系统。(AppArmor和TOMOYO可能有相似的事情,但是我对它们都不是很熟悉。)



