Я хочу иметь гибкую настройку (нужно будет запустить Redis, Celery и uWSGI), но мне интересно, не стоит ли запускать Supervisor как root
(по умолчанию), и если да, то почему это плохо.
Supervisor с радостью запускает от имени пользователя root и меняет пользователя процессов, которые вы запускаете для вас. Однако супервизор может открывать сетевые порты для соединений HTTP и XML-RPC, если вы настроите его для этого. Их открытость теоретически делает супервизор более уязвимым для работы с правами root, чем, например, DAEMON Tools.
При развертывании сервисов (например, для конкретного проекта, назовем его «fancysite») я создаю пользователя, соответствующего этой услуге («fancysite»), который, в свою очередь, запускает супервизор, а также все определенные демоны, которые составляют «fancysite», но не являются t запускать обычные сценарии инициализации из системы. Например. Я обычно запускаю nginx, PostgreSQL и другие на системном уровне с тем, что предоставляет дистрибутив, а затем устанавливаю вещи, которые не поддерживаются дистрибутивом, в пользователя «fancysite» и запускаю и управляю ими через супервизор.