Linux 中用户进程限制

Linux 中用户进程限制

这是一个标准问题,“如何在 Linux 中为用户帐户设置进程限制以防止 fork-bombing”,但有一个额外的问题。正在运行的程序源自 root 拥有的 Python 进程,然后该进程将自身设置为普通用户 setuids/setgids。据我所知,此时,/etc/security/limits.conf 中设置的任何限制均不适用;setuid 进程现在可能会 fork 炸弹。有什么想法可以防止这种情况发生吗?

答案1

您需要查看“UNIX 环境中的高级编程”。这本书详细介绍了帮助您实现目标的必要步骤。从进程克隆/分叉的任何子进程都将继承父进程的 rlimit。在我看来,您有两个选择:一个是您可以在创建子进程后专门设置 rlimit(不太好),或者您可以执行双重分叉魔法来创建一个新的进程组和会话领导者,它们将正确继承系统中设置的 rlimit。

答案2

由于子进程继承了 ulimit 设置,您是否可以在设置 uid/gid 后在 python 脚本中运行 ulimit,从而创建一个新的(较低的)硬限制,这将成为所有潜在 fork-bomblet 的新运行条件?

相关内容