Permitimos a los usuarios ejecutar scripts en nuestros servidores. Nuestro modelo de seguridad implica hacerles chroot. Queremos poder aplicarles restricciones ulimit, y la mejor manera de hacerlo parece ser en/etc/security/limits.conf
Pero no parece funcionar. Esto es lo que configuramos limits.conf
:
@registered_users - priority 7
@registered_users - nice 7
* - priority 9
* - nice 9
Y funciona en algunos casos:
sudo -u testuser python
Dará un proceso de Python con amabilidad 9 (no 7, molestamente)
PERO
sudo chroot --userspec=testuser:registered_users python
da un proceso de Python con amabilidad 0.
¿alguna pista?
Intentamos agregarlo session required pam_limits.so
, /etc/pam.d/common-session
sin éxito.
Respuesta1
Las configuraciones en /etc/security/limits.conf no funcionan dentro del chroot porque no hay ningún programa que use pam_limits para configurarlas. Funcionan cuando usas sudo, porque la configuración PAM de sudo llama a pam_limits.
La respuesta obvia es llamar a algo dentro del chroot que use pam_limits, como "su", como dicen aquí:https://lists.debian.org/debian-user/2010/09/msg01398.html(aunque debes descomentar la línea que usa pam_limits en /etc/pam.d/su, porque viene comentada de forma predeterminada).
Es decir, asumiendo que su directorio chroot es /srv/chroot y desea ejecutar /usr/bin/python, podría intentar algo como esto:
sudo chroot /srv/chroot su testuser /usr/bin/python
Creo que sudo también funcionará:
sudo chroot /srv/chroot sudo -u testuser /usr/bin/python
Pero sólo puedo hablar por "su", que es lo que uso en un caso como este. Por favor, pruébalo y dinos si funcionó para ti.