Следует ли при запуске приложения Django на сервере Debian создать какого-то пользователя приложения (например, «myappuser») и запускать процесс gunicorn от имени этого пользователя, или можно / нужно запускать gunicorn от имени пользователя root? Будет ли запуск его от имени пользователя root представлять угрозу безопасности? Я установил Gunicorn с помощью APT, а не в виртуальной среде. Запуск его от имени пользователя приложения, похоже, усложняет настройку, поскольку вы должны дать этому пользователю разрешение на запись в файлы журнала, файл PID и т. Д. Кажется, проще запустить его от имени пользователя root.
exec gunicorn $DJANGO_WSGI_MODULE:application \
--name myapp \
--user=$USER \ # <- who should this be?
--group=$GROUP \
Как правило, всегда рекомендуется запускать воркеры и подобные вещи под отдельным пользователем, которому специально даны только разрешения, необходимые для запуска. Запуск чего-либо с правами root обычно проще, поскольку вам редко приходится беспокоиться о проблемах с разрешениями, но это всегда менее безопасно, поскольку все, что может успешно использовать ваше приложение, будет иметь немедленный root-доступ к вашей системе, вместо того, чтобы искать какой-либо способ для дальнейшей эскалации. Даже если нет преднамеренного эксплойта, если приложение каким-то образом выйдет из строя, оно может, например, привести к разрушению важных частей вашей файловой системы. Прикусите пулю и разберитесь с небольшой сложностью возиться с разрешениями сейчас, вместо того чтобы принимать риск безопасности, связанный с запуском от имени root. В некоторых случаях может быть целесообразно повторно использовать какого-либо другого пользователя, который уже существует (например, www-данные для работ для веб-приложения), если это упрощает задачу.