哪个用户应该运行 gunicorn 进程?

Jim*_*Jim 5 ubuntu debian django gunicorn

在 Debian 服务器上运行 Django 应用程序时,您应该创建某种应用程序用户(例如“myappuser”)并以该用户身份运行 gunicorn 进程还是可以/应该以 root 身份运行 gunicorn ?以 root 身份运行它会产生安全风险吗?我已经使用 APT 安装了 gunicorn,而不是将其安装在虚拟环境中。以应用程序用户身份运行它似乎会使配置更加困难,因为您必须授予该用户写入日志文件、PID 文件等的权限。以 root 身份运行它似乎更容易。

exec gunicorn $DJANGO_WSGI_MODULE:application \
  --name myapp \
  --user=$USER \     # <- who should this be?
  --group=$GROUP \
Run Code Online (Sandbox Code Playgroud)

Car*_*cer 3

作为一般规则,在单独的用户下运行工作人员和此类事物始终是一个好主意,该用户专门仅获得运行所需的权限。以 root 身份运行通常更容易,因为您很少需要担心权限问题,但它总是不太安全,因为任何可以成功利用您的应用程序的东西都将立即对您的系统进行 root 访问,而不必找到某种方法来进一步升级。即使没有故意利用,如果应用程序以某种方式出现灾难性错误,它最终可能会破坏文件系统的重要部分。现在就咬紧牙关,处理权限问题带来的轻微复杂性,而不是接受以 root 身份运行的安全风险。在某些情况下,如果这会让事情变得更容易的话,重用已经存在的其他一些用户(例如,用于 Web 应用程序的 www-data)可能是合适的。