我们允许用户在我们的服务器上执行脚本。我们的安全模型涉及 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”,这就是我在这种情况下使用的。请尝试一下,看看它是否对你有用。