Я работаю над тем, как обслуживать приложения Django с помощью uWSGI и Nginx в Ubuntu 16.04 . В конце «Создайте системный файл модуля для uWSGI» в статье они обсуждают www-data
пользователя. Что это такое и почему это важно?
Я работаю над тем, как обслуживать приложения Django с помощью uWSGI и Nginx в Ubuntu 16.04 . В конце «Создайте системный файл модуля для uWSGI» в статье они обсуждают www-data
пользователя. Что это такое и почему это важно?
Ответы:
Для обеспечения безопасности.
Файлы не доступны для записи. Они ограничены владельцем файлов для записи.
Веб-сервер должен работать под определенным пользователем. Этот пользователь должен существовать.
Если бы он запускался с правами root, то все файлы должны были бы быть доступны пользователю root, а пользователь должен был бы иметь права root для доступа к файлам. Поскольку root является владельцем, скомпрометированный веб-сервер будет иметь доступ ко всей вашей системе. Указав конкретный идентификатор, скомпрометированный веб-сервер будет иметь полный доступ только к своим файлам, а не ко всему серверу.
Если вы решите запустить его под другим идентификатором пользователя, то этот пользователь должен быть эффективным владельцем файлов для получения соответствующих привилегий. Может быть непонятно, если вы лично владеете общесистемными файлами в своей учетной записи.
Создание определенного пользователя облегчит распознавание файлов и непротиворечивость определения идентификатора chown
для новых файлов и папок, добавленных на сайт.
Идентификатор пользователя или имя владельца не имеет значения. Все, что выбрано или решено, должно быть настроено в файлах конфигурации веб-сервера.
По умолчанию конфигурация владельца находится www-data
в конфигурации Ubuntu Apache2. Поскольку это конфигурация по умолчанию, вам удобно знать владельца, необходимый для ваших веб-файлов. Если вы измените его, вам придется изменить файлы на вашем сайте, чтобы соответствовать.
Я не запускаю Nginx , но поскольку он находится в репозитории Ubuntu, я уверен, что он был протестирован с www-data
конфигурацией по умолчанию.
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
безусловно, нужен доступ на чтение ко всем данным, которые нужно обслужить, но если вы дадите только разрешения, необходимые для каждого файла и каталога, а не больше, вы будете более защищены.
www-data
это пользователь, который веб-серверы в Ubuntu (например, Apache, nginx) используют по умолчанию для нормальной работы. Процесс веб-сервера может получить доступ к любому файлу, к которому www-data
есть доступ. Это не имеет никакого другого значения.
Из base-passwd
документации ( /usr/share/doc/base-passwd/users-and-groups.txt.gz
):
Некоторые веб-серверы работают как www-данные. Веб-контент не должен принадлежать этому пользователю, иначе скомпрометированный веб-сервер сможет переписать веб-сайт. Данные, записанные веб-серверами, будут принадлежать www-данным.
base-passwd
документы для этого
www-data
является пользователем (а также группы) , что служба HTTPD (Apache) будет действовать с вашей системы.