Я працюю над тим, як обслуговувати програми Django з uWSGI та Nginx на Ubuntu 16.04 . Наприкінці "Створити системний файл одиниці для uWSGI" у статті, яку вони обговорюють www-data
користувач. Що це таке і чому це важливо?
Я працюю над тим, як обслуговувати програми Django з uWSGI та Nginx на Ubuntu 16.04 . Наприкінці "Створити системний файл одиниці для uWSGI" у статті, яку вони обговорюють www-data
користувач. Що це таке і чому це важливо?
Відповіді:
Для безпеки.
Файли не підлягають світовому запису. Вони обмежені власником файлів для запису.
Веб-сервер повинен працювати під певним користувачем. Цей користувач повинен існувати.
Якщо він запускався під коренем, то всі файли повинні бути доступними корінцями, а користувачеві потрібно мати root для доступу до файлів. Оскільки root є власником, компрометований веб-сервер мав би доступ до всієї вашої системи. Вказавши конкретний ідентифікатор, компрометований веб-сервер мав би лише повний доступ до своїх файлів, а не до всього сервера.
Якщо ви вирішите запустити його під іншим ідентифікатором користувача, тоді він повинен бути ефективним власником файлів для отримання належних привілеїв. Особисте право власності на загальносистемні файли на ваш особистий рахунок може бути заплутаним.
Створення конкретного користувача полегшило б розпізнавати файли та послідовно розпізнавати, який ідентифікатор chown
до нових файлів і папок, доданих на сайт.
Userid або ім'я власника не має значення. Що б не було обрано чи вирішено, потрібно буде налаштувати у файлах конфігурації веб-сервера.
За замовчуванням конфігурація власника знаходиться 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-data. Цей веб-контент не повинен належати цьому користувачеві, або компрометований веб-сервер зможе переписати веб-сайт. Дані, виписані веб-серверами, будуть належати www-data.
base-passwd
документи для цього
www-data
- це користувач (а також група), з яким у вашій системі діє служба httpd (apache) .