limits.conf ulimits werden nicht auf chrootierte Prozesse angewendet

1503
hwjp

Wir erlauben Benutzern, Skripte auf unseren Servern auszuführen. Unser Sicherheitsmodell besteht darin, sie zu chrootieren. Wir möchten Ulimit-Beschränkungen auf sie anwenden können, und der beste Weg, dies zu tun, scheint zu sein/etc/security/limits.conf

Aber es scheint nicht zu funktionieren. Hier setzen wir ein limits.conf:

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

Und es funktioniert in einigen Fällen:

sudo -u testuser python 

Wird einen Python-Prozess mit der Neugier 9 (nicht 7, ärgerlich) geben

ABER

sudo chroot --userspec=testuser:registered_users python 

gibt einen Python-Prozess mit Freundlichkeit 0.

irgendwelche Hinweise?

Wir haben versucht, das Hinzufügen session required pam_limits.sozu /etc/pam.d/common-session, ohne Erfolg.

4
Haben Sie versucht, limits.conf in das Chroot-Gefängnis zu kopieren? haimg vor 12 Jahren 1
yeah .. wir haben auch versucht, Prozesse mit "bash -l -c python" anstelle von "python" zu starten, um den pam / login-Prozess aufzurufen, ohne Erfolg ... hwjp vor 12 Jahren 0
Sie können versuchen, 'strace' auf Ihrem Befehl auszuführen, mit und ohne chroot, und den Unterschied prüfen, z. B. die beiden Ausgänge unterscheiden. haimg vor 12 Jahren 1

1 Antwort auf die Frage

1
rsuarez

Die Einstellungen in /etc/security/limits.conf funktionieren nicht in der Chroot-Datei, da es kein Programm gibt, das pam_limits verwendet, um sie einzustellen. Sie funktionieren, wenn Sie sudo verwenden, da die PAM-Konfiguration von sudo pam_limits aufruft.

Die naheliegende Antwort ist, etwas in der Chroot zu rufen, das pam_limits verwendet, wie "su", wie hier gesagt wird: https://lists.debian.org/debian-user/2010/09/msg01398.html (obwohl Sie dies müssen Kommentieren Sie die Zeile, die pam_limits in /etc/pam.d/su verwendet, ab, da sie standardmäßig kommentiert ist.

Wenn Sie davon ausgehen, dass Ihr Chroot-Verzeichnis / srv / chroot ist und Sie / usr / bin / python ausführen möchten, können Sie Folgendes versuchen:

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

Ich denke, Sudo wird auch den Trick tun:

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

Aber ich kann nur für "su" sprechen, was ich in einem solchen Fall verwende. Bitte probieren Sie es aus und sagen Sie, ob es für Sie funktioniert hat.

... ist die richtige Antwort. Wir hatten es tatsächlich herausgefunden, hatten aber vergessen, diese Frage zu aktualisieren. Vielen Dank, dass Sie weiter verfolgen! hwjp vor 9 Jahren 0