
我們允許用戶在我們的伺服器上執行腳本。我們的安全模型涉及對它們進行 chroot。我們希望能夠對它們應用 ulimit 限制,最好的方法似乎是/etc/security/limits.conf
但是,這似乎不起作用。這是我們設定的內容limits.conf
:
@registered_users - priority 7
@registered_users - nice 7
* - priority 9
* - nice 9
它在某些情況下有效:
sudo -u testuser python
會給一個Python進程的niceness為9(不是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”,這是我在這種情況下使用的。請嘗試一下,看看它是否適合您。