我正在努力如何在 Ubuntu 16.04 上使用 uWSGI 和 Nginx 提供 Django 应用程序。在文章“为 uWSGI 创建 systemd 单元文件”的结尾,他们讨论了用户www-data
。这是什么,为什么它很重要?
答案1
为了安全。
这些文件不是所有人都可写的。只有文件的所有者才可以写入。
Web 服务器必须在特定用户下运行。该用户必须存在。
如果它在 root 下运行,那么所有文件都必须能够由 root 访问,并且用户需要以 root 身份才能访问这些文件。 由于 root 是所有者,因此受感染的 Web 服务器将能够访问您的整个系统。 通过指定特定的 ID,受感染的 Web 服务器只能完全访问其文件,而不能完全访问整个服务器。
如果您决定使用不同的用户 ID 运行它,那么该用户需要是文件的实际所有者才能获得适当的权限。将系统范围内文件的个人所有权归属于您的个人帐户可能会造成混淆。
创建特定用户将使识别文件变得更容易,并且可以一致地识别chown
添加到站点的新文件和文件夹的 ID。
这用户身份或者姓名所有者是谁并不重要。无论选择或决定什么,都必须在 Web 服务器配置文件中进行配置。
默认情况下,所有者的配置位于www-data
Apache2 的 Ubuntu 配置中。由于这是默认配置,因此您可以方便地了解 Web 文件所需的所有权。如果您更改它,则必须更改站点中的文件以匹配。
我不跑步Nginx,但由于它位于 Ubuntu 存储库中,我确信它已经使用www-data
默认配置进行了测试。
答案2
www-data
是 Ubuntu 上的 Web 服务器(例如 Apache、nginx)默认用于正常运行的用户。Web 服务器进程可以访问任何可以www-data
访问的文件。它没有其他重要性。
来自base-passwd
文档(/usr/share/doc/base-passwd/users-and-groups.txt.gz
):
某些 Web 服务器以 www-data 的身份运行。Web 内容不应归该用户所有,否则受感染的 Web 服务器将能够重写网站。Web 服务器写出的数据将归 www-data 所有。