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

哪个用户应该运行 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 \

答案1

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

相关内容