Это стандартный вопрос: «Как мне установить ограничение процесса для учетной записи пользователя в Linux, чтобы предотвратить взлом вилки», с дополнительным поворотом. Запущенная программа создается как процесс Python, принадлежащий пользователю root, который затем устанавливает uids / setgids как обычный пользователь. Насколько мне известно, на данный момент никакие ограничения, установленные в /etc/security/limits.conf, не применяются; процесс setuid-ed теперь может разветвлять бомбу. Есть идеи, как это предотвратить?
Вам нужно взглянуть на «Расширенное программирование в среде UNIX». В этой книге подробно описаны необходимые шаги, которые помогут вам достичь того, что вы пытаетесь. Любой дочерний процесс, клонированный / разветвленный из процесса, унаследует родительские ограничения. У вас есть два варианта, как я это вижу: один вы можете специально установить rlimits после создания дочернего элемента (не так хорошо) или вы можете использовать магию двойной вилки, чтобы создать новую группу процессов и лидера сеанса, которые будут правильно наследовать rlimits установлен в системе.
Поскольку дочерние процессы наследуют настройки ulimit, не могли бы вы запустить ulimit в скрипте python после того, как он установил uid / gid, создав новый (нижний) жесткий лимит, который затем станет новым рабочим условием для всех потенциальных вилок-бомб ?