我如何以用户 ww-data 的身份通过 nginx 运行 fastcgi?

我如何以用户 ww-data 的身份通过 nginx 运行 fastcgi?

我的 django 应用程序保存图像,并且它们被保存为 nobody:nobody 而不是 www-data: ,就像它们以前在不同服务器下一样。nginx 设置为用户 www-data 并且我以 root 身份运行 manage.py runfcgi,因此权限应该不是问题。

答案1

检查ps waux。我怀疑你的 manage.py runfcgi 已将权限移交给其他用户,以确保您没有以 root 身份运行脚本 - 这是非常危险的事情。

如果是这种情况,解决方案很简单,只需编辑您管理 fcgi 实例的配置,并让其使用 www-data:www-data 作为放弃权限的用户和组,而不是 nobody。

答案2

在 fastcgi 中运行 django 必须由用户代码停止和启动,如果您调用 ./manage.py runfcgi,您的用户将拥有该进程。如果您从启动作业运行此作业,则 root 将拥有该进程,这很糟糕,因为它写入的文件和日志将无法被其他用户和进程访问,并且不会为您的应用留下任何权限沙盒。最佳做法是使用与 apache 或需要与其共享文件的其他应用相同的用户启动您的应用。如果您的应用需要从启动脚本(根上下文)启动

sudo -u youruser manage.py runfcgi

以避免您的应用程序以 root 身份运行。

您提到了用户“nobody”——这是 nginx 保存文件的默认用户。我建议您让 nginx 使用与您的应用相同的用户,您可以通过添加

user youruser;

在 nginx.conf 中

相关内容