在Debian服务器上运行Django应用程序时,是否应该创build某种应用程序用户(例如“myappuser”),并以该用户身份运行gunicorn进程,或者可以/以root身份运行gunicorn进程? 以root身份运行会造成安全风险吗? 我已经使用APT安装了gunicorn,而不是将其安装在虚拟环境中。 以应用程序用户身份运行它似乎使configuration更加困难,因为您必须授予该用户写入日志文件,PID文件等的权限。以root身份运行它似乎更容易。
exec gunicorn $DJANGO_WSGI_MODULE:application \ --name myapp \ --user=$USER \ # <- who should this be? --group=$GROUP \
一般来说,在一个单独的用户下运行员工和类似的东西总是一个好主意,而这个用户只能被授予运行权限。 以root身份运行事情通常会比较容易,因为您几乎不必担心权限问题,但是因为任何可以成功利用您的应用程序的东西都可以立即访问您的系统,而无需进一步升级, 即使没有刻意的利用,如果应用程序以某种方式发生灾难性的错误,它可能会最终摧毁文件系统的重要部分。 硬着头皮来处理现在使用权限的轻微复杂性,而不是接受以root身份运行的安全风险。 在某些情况下,重用一些已经存在的其他用户(例如,用于Web应用程序的www-data)可能是适当的,如果这样做更容易的话。