limits.conf ulimits 未应用于 chrooted 进程

limits.conf ulimits 未应用于 chrooted 进程

我们允许用户在我们的服务器上执行脚本。我们的安全模型涉及 chrooting 它们。我们希望能够对它们应用 ulimit 限制,而最好的方法似乎是/etc/security/limits.conf

但是,这似乎不起作用。下面是我们设置的内容limits.conf

@registered_users    -    priority   7
@registered_users    -    nice       7
*                    -    priority   9
*                    -    nice       9

在某些情况下它是有效的:

sudo -u testuser python

将给出一个优先级为 9 的 Python 进程(不是 7,很烦人)

sudo chroot --userspec=testuser:registered_users python

给出一个niceness为0的python进程。

有什么线索吗?

我们尝试添加session required pam_limits.so/etc/pam.d/common-session但没有成功。

答案1

/etc/security/limits.conf 中的设置在 chroot 中不起作用,因为没有程序使用 pam_limits 来设置它们。当您使用 sudo 时,它们会起作用,因为 sudo 的 PAM 配置确实会调用 pam_limits。

显而易见的答案是在 chroot 内部调用使用 pam_limits 的某些东西,比如“su”,正如他们在这里所说的:https://lists.debian.org/debian-user/2010/09/msg01398.html(尽管您必须取消注释 /etc/pam.d/su 中使用 pam_limits 的行,因为它默认已被注释)。

即假设您的 chroot 目录是 /srv/chroot,并且您想要执行 /usr/bin/python,您可以尝试如下操作:

sudo chroot /srv/chroot su testuser /usr/bin/python

我认为 sudo 也可以解决问题:

sudo chroot /srv/chroot sudo -u testuser /usr/bin/python

但我只能说“su”,这就是我在这种情况下使用的。请尝试一下,看看它是否对你有用。

相关内容