Linux用户权限运行Web应用程序的最佳做法是什么?

时间:2012-10-17 21:24:13

标签: django permissions nginx uwsgi

我在网上看到很多不同的建议,关于从哪里为你的web应用程序提供服务,用什么用户来运行它等等。

例如,我看过它来自:/ var / www / site,/ srv / www / site,/ home / $ USER / site。

我看到用户是www-data,$ USER(即我的用户帐户),或专门为此目的创建的自定义用户(例如用户uwsgi)。

在安全性方面,我可以选择的最佳方案是什么?

作为参考,我正在尝试使用Nginx和uwsgi部署Django站点。

现在,uwsgi在emperor模式下以root身份运行,uid / gid设置为www-data,因此vassals以与Nginx worker相同的权限生成。我在家里服务,但想着搬家。

1 个答案:

答案 0 :(得分:6)

对于位置,请选择最适合您的位置。以下是一些需要帮助的注意事项:

  • /var下的地点适用于change in size或通常为“变量”的文件。
  • /srv通常表示与计算机上运行的某些服务相关的文件。
  • 通常应为交互式用户保留
  • /home。但是,您可以将系统用户的主目录设置为任何内容。

为了安全起见,您应该尽可能地进行细分。应用程序不应与Web服务器作为同一用户运行,因此不能滥用它来读取与服务器本身相关的敏感文件(.htaccess或其他)。应用程序的二进制文件(或Django,python源)应该由root拥有,而无需对应用程序用户的写访问权。

这是关于如何设置它的2美分:

  • Django app:/usr/lib/appname//usr/lib/python/site-packages/appname/(如果已安装)。由root拥有,chmod 644。
  • App的文件(例如sqlite db文件,FastCGI的Unix套接字,上传的文件存储等):/var/lib/appname/。由app-user拥有,chmod 600。
  • app-user的shell为/bin/nologin,home为/var/lib/appname/。用户没有配置密码。
相关问题