2

我正在使用apparmorsetrlimitcap_set_rpoc在 Linux 中创建一个沙盒环境,让匿名用户基本上在我的服务器上在科学应用程序的上下文中执行一些任意代码。沙盒中特别允许的一件事是通过分叉和调用可执行文件来启动新进程(尽管一个用户的进程总数受限于RLIMIT_NPROC)。

在给定的时间段之后,比如 1 分钟,系统将杀死主进程,以及所有潜在的子进程。我目前依靠进程组 id 来识别孩子。但是,理论上,子进程可以调用以更改其进程组,这样当我调用主进程 idsetpgid时它将不再受到影响(对吗?)。kill(-1 * pid)不幸的是,我无法设置 linuxcapability来阻止进程调用setpgid.

什么是杀死进程及其所有(递归)子进程的稳健方法,这将使子进程很难以某种方式“逃脱”屠杀并继续作为孤儿进程?

4

1 回答 1

1

如果你使用lxc(Linux 容器)来隔离每个进程树,那么你可以使用lxc-stop来杀死一个容器中的所有进程。请参阅lxc 手册页的“启动/停止容器”部分。

于 2012-11-07T01:53:35.723 回答