
우리는 사용자가 우리 서버에서 스크립트를 실행할 수 있도록 허용합니다. 우리의 보안 모델에는 루트를 바꾸는 것이 포함됩니다. 우리는 그들에게 ulimit 제한을 적용할 수 있기를 원하며 이를 수행하는 가장 좋은 방법은 다음과 같습니다./etc/security/limits.conf
하지만 작동하지 않는 것 같습니다. 우리가 설정한 내용은 다음과 같습니다 limits.conf
.
@registered_users - priority 7
@registered_users - nice 7
* - priority 9
* - nice 9
그리고 어떤 경우에는 작동합니다:
sudo -u testuser python
Python 프로세스에 친절도 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의 설정은 pam_limits를 사용하여 설정하는 프로그램이 없기 때문에 chroot 내에서 작동하지 않습니다. sudo의 PAM 구성이 pam_limits를 호출하기 때문에 sudo를 사용할 때 작동합니다.
확실한 대답은 여기에서 말하는 것처럼 "su"와 같이 pam_limits를 사용하는 chroot 내부에서 무언가를 호출하는 것입니다.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"에 대해서만 말할 수 있습니다. 시도해 보시고 효과가 있었는지 말씀해 주십시오.