为正在运行的守护程序启用PAMconfiguration(limits.conf)

我目前正在尝试使用Docker开发沙箱。 Docker通过正在运行的守护进程产生进程,并且在启用limits.conf文件中规定的限制时遇到很大的麻烦,使得它们适用于守护进程。 具体来说,我正在运行一个forkbomb,这样守护进程就是所有新进程的产生过程。 我给用户打这个电话的nproc限制似乎并没有得到应用,我对于我的生活还是无法弄清楚如何使它工作。 我很安静,只要将正确的文件添加到/etc/pam.d/,但我不确定。

PAM的限制只适用于和PAM玩的很好的进程。 默认情况下,当你在一个容器中启动一个shell时,它不会和PAM有任何关系,通过PAM设置限制是行不通的。

下面是一些其他的方法来实现它!

  1. 不要立即开始你的过程,你可以启动一个小的包装脚本,它会在执行你的过程之前做适当的ulimit调用。

  2. 如果你想要一个交互式shell,你可以运行login -f <username> (例如login -f root ); 这将使用正常的login过程来自动login你的机器(这应该通过正常的PAM机制)。

  3. 如果您希望所有容器都受到这些限制,则可以在系统上设置限制,然后使用这些下限重新启动Docker; 容器是由Docker创build的,默认情况下,它们也会inheritance这些限制。