Что такое пользователь www-data?

Ответы:

36

Для обеспечения безопасности.

Файлы не доступны для записи. Они ограничены владельцем файлов для записи.

Веб-сервер должен работать под определенным пользователем. Этот пользователь должен существовать.

Если бы он запускался с правами root, то все файлы должны были бы быть доступны пользователю root, а пользователь должен был бы иметь права root для доступа к файлам. Поскольку root является владельцем, скомпрометированный веб-сервер будет иметь доступ ко всей вашей системе. Указав конкретный идентификатор, скомпрометированный веб-сервер будет иметь полный доступ только к своим файлам, а не ко всему серверу.

Если вы решите запустить его под другим идентификатором пользователя, то этот пользователь должен быть эффективным владельцем файлов для получения соответствующих привилегий. Может быть непонятно, если вы лично владеете общесистемными файлами в своей учетной записи.

Создание определенного пользователя облегчит распознавание файлов и непротиворечивость определения идентификатора chownдля новых файлов и папок, добавленных на сайт.

Идентификатор пользователя или имя владельца не имеет значения. Все, что выбрано или решено, должно быть настроено в файлах конфигурации веб-сервера.

По умолчанию конфигурация владельца находится www-dataв конфигурации Ubuntu Apache2. Поскольку это конфигурация по умолчанию, вам удобно знать владельца, необходимый для ваших веб-файлов. Если вы измените его, вам придется изменить файлы на вашем сайте, чтобы соответствовать.

Я не запускаю Nginx , но поскольку он находится в репозитории Ubuntu, я уверен, что он был протестирован с www-dataконфигурацией по умолчанию.

Л.Д. Джеймс
источник
2
Это здорово, спасибо за попытку объяснить общую картину.
user61629
1
Кстати, что такое «конкретный идентификатор»?
user61629
1
Это www-data. Вот почему, как и в вашем вопросе, они попросили вас создать userID и groupID, если они не существуют. Установка Apache2 автоматически создает пользователя. Я не уверен насчет Nqinx . Вы можете проверить , чтобы увидеть , если она существует с: iid -u www-data&&id -g www-data. Если он существует, он покажет вам номер пользователя и группы. По умолчанию в Ubuntu номера пользователей и групп 33.
Л.Д. Джеймс
Назначение www-dataв качестве владельца также может представлять угрозу безопасности, как упомянуто в base-passwdдокументации (см. Ответ @ muru), поскольку владельцы обычно имеют доступ на чтение / запись ко всему содержимому веб-службы. Вы можете удалить права на запись для www-dataвладельца или использовать другого владельца. www-dataбезусловно, нужен доступ на чтение ко всем данным, которые нужно обслужить, но если вы дадите только разрешения, необходимые для каждого файла и каталога, а не больше, вы будете более защищены.
Юваль
18

www-dataэто пользователь, который веб-серверы в Ubuntu (например, Apache, nginx) используют по умолчанию для нормальной работы. Процесс веб-сервера может получить доступ к любому файлу, к которому www-dataесть доступ. Это не имеет никакого другого значения.

Из base-passwdдокументации ( /usr/share/doc/base-passwd/users-and-groups.txt.gz):

Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, иначе скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, записанные веб-серверами, будут принадлежать www-данным.

Мур
источник
3
кроме обсуждения того, почему вы не должны предоставлять доступ к www-данным через файлы
webroot
1
Просто чтобы сделать это более конкретным для меня, могу ли я спросить, к каким сервисам нужен веб-сервер для доступа к странице?
user61629
2
@ user61629 услуги? Веб-сервер сам по себе является службой, по обычным определениям службы.
Муру
1
@kitingChris да, я просто копал base-passwdдокументы для этого
муру
1
www-dataявляется пользователем (а также группы) , что служба HTTPD (Apache) будет действовать с вашей системы.
kitingChris