我正在研究如何在Ubuntu 16.04上使用uWSGI和Nginx服务Django应用程序。在文章“为uWSGI创建系统化的单位文件”的最后,他们讨论了www-data
用户。这是什么,为什么重要?
我正在研究如何在Ubuntu 16.04上使用uWSGI和Nginx服务Django应用程序。在文章“为uWSGI创建系统化的单位文件”的最后,他们讨论了www-data
用户。这是什么,为什么重要?
Answers:
为了安全。
这些文件不是世界可写的。它们仅限于写入文件的所有者。
Web服务器必须在特定用户下运行。该用户必须存在。
如果在root用户下运行,则所有文件都必须由root用户访问,并且用户必须是root用户才能访问文件。 以root作为所有者,受感染的Web服务器将可以访问您的整个系统。 通过指定特定的ID,受感染的Web服务器将只能完全访问其文件,而不能完全访问整个服务器。
如果您决定在其他用户ID下运行它,则该用户必须是文件的有效所有者才能获得适当的特权。对您的个人帐户拥有系统范围文件的个人所有权可能会造成混淆。
创建特定用户将使识别文件变得更加容易,并且可以一致地识别要chown
添加到站点的新文件和文件夹的ID 。
所有者的用户名或名称无关紧要。无论选择或决定的内容,都必须在Web服务器配置文件中进行配置。
默认情况下,所有者www-data
的配置为Apache2的Ubuntu配置。由于这是默认配置,因此您可以方便地知道Web文件所需的所有权。如果更改它,则必须更改站点中的文件以匹配。
我没有运行Nginx,但是由于它在Ubuntu存储库中,所以我确定它已经通过www-data
默认配置进行了测试。
www-data
。这就是为什么在您的问题中,他们要求您创建userID和groupID(如果不存在)。Apache2安装会自动创建用户。我不确定Nqinx。您可以使用来检查它是否存在iid -u www-data&&id -g www-data
。如果存在,它将为您显示用户和组的ID号。在Ubuntu上,默认情况下,用户和组号为33
。
www-data
在作为所有者,也可以作为中提到的安全风险base-passwd
的文件(见@穆鲁的答案),作为所有者通常已经阅读所有的服务网络内容/写访问。您可以删除对www-data
所有者的写访问权,也可以使用其他所有者。www-data
绝对需要对要提供的所有数据进行读取访问,但是如果您仅授予每个文件和目录所需的权限,而没有更多权限,那么您将更加安全。
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所有。
base-passwd
为此准备了文档
www-data
是服务httpd(apache)在您的系统上与之配合使用的用户(和组)。