弊社のサーバーでは、ユーザーがスクリプトを実行できるようにしています。弊社のセキュリティモデルでは、スクリプトを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 の設定は、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」についてだけです。ぜひ試してみて、うまくいったかどうか教えてください。