禁用 pid-namespace init 进程信号处理程序限制

禁用 pid-namespace init 进程信号处理程序限制

Ubuntu 16.04 / Linux 版本 4.4.0-47-generic / gcc 版本 5.4.0

我想使用 linux cgroup 实现一个容器,部分实现是将进程运行到新的 pid 命名空间中。

文档

只有“init”进程已为其建立了信号处理程序的信号才能由 PID 命名空间的其他成员发送到“init”进程。此限制甚至适用于特权进程,并防止 PID 命名空间的其他成员意外终止“init”进程。

不幸的是,这适用于 init 进程本身。例如,如果断言闯入 init 进程并且它没有 sig6 的处理程序,则断言代码将发送 sig11。

有什么方法可以禁用此功能(至少在 init 进程向自身发送信号的情况下)。我无法强制 init 进程为这种情况提供信号处理程序,我想知道为什么该进程停止了。

一个小黑客可以是创建一个虚拟初始化进程,它将以某种方式转发来自目标程序的信号,但是有一个非黑客的解决方案吗?

相关内容