- What is the www-data user?
- 2 Answers 2
- Пользователь и группа www-data
- Команда chmod
- Команда chown
- Исходные данные
- Изменяем владельца
- Устанавливаем права
- Читайте также
- ubuntu linux Как работать с www-data (права для работы с файлами через php apache) — для машины разработчика. Рекомендуемые
- Добавляем своего пользователя в группу www-data
- Видео-пояснения
What is the www-data user?
I’m working through How To Serve Django Applications with uWSGI and Nginx on Ubuntu 16.04. At the end of the «Create a systemd Unit File for uWSGI» in the article they discuss the www-data user. What is this and why is it important?
2 Answers 2
For security.
The files are not world writeable. They are restricted to the owner of the files for writing.
The web server has to be run under a specific user. That user must exist.
If it were run under root, then all the files would have to be accessible by root and the user would need to be root to access the files. With root being the owner, a compromised web server would have access to your entire system. By specifying a specific ID a compromised web server would only have full access to its files and not the entire server.
If you decide to run it under a different user ID, then that user would need to be the effective owner of the files for proper privileges. It could be confusing to have personal ownership of system-wide files to your personal account.
Creating a specific user would make it easier to recognize the files and consistent to recognize which ID to chown to new files and folders added to the site.
The Userid or Name of the owner doesn’t matter. Whatever is chosen or decided upon will have to be configured in the web server configuration files.
By default the configuration of the owner is www-data in the Ubuntu configuration of Apache2. Since that is the default configuration, you conveniently know the ownership needed for your web files. If you change it, you would have to change the files in your site to match.
I don’t run Nginx, but since it’s in the Ubuntu repository, I’m sure it has been tested with the www-data configuration as default.
Пользователь и группа www-data
После установки Apache нужно установить правильные права доступа для пользователей и групп. В этом нам помогут команды chown (изменить владельца) и chmod (изменить права доступа). Рассмотрим эти команды, а потом установим владельца для директории /var/www и права доступа к ней.
В Linux существует всего три вида прав — право на чтение ( read ), запись ( write ) и выполнение ( execute ), а также три категории пользователей, к которым они могут применяться — владелец файла ( user ), группа владельца ( group ) и все остальные ( others ).
Команда chmod
Изменяет прав доступа к файлу или директории.
chmod [опции] ВладелецГруппаДругие файл(ы)Копировать
- Опция -R позволяет рекурсивно изменять права доступа для каталога
- Владелец — права доступа в числовом виде для владельца
- Группа — права доступа в числовом виде для группы
- Другие — права доступа в числовом виде для других
Команда chown
Изменяет владельца и/или группу файла или директории.
chown [опции] владелец[:группа] файл(ы)Копировать
Опция -R — позволяет рекурсивно изменять владельца каталога.
Исходные данные
После установки web-сервера
- Apache запущен под пользователем и группой www-data
- Директории виртуальных хостов расположены в /var/www
Нам нужно обеспечить минимальные права для web-сервера (чтение директорий и файлов), чтобы он мог работать. И предоставить необходимые права на создание, редактирование и удаление файлов и директорий разработчику.
Создадим пользователя developer и назначим ему основную группу www-data :
$ sudo useradd -m -s /bin/bash -g www-data developerКопировать
Зададим пароль для нового пользователя:
$ sudo passwd developer Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлёнКопировать
Изменяем владельца
Устанавливаем владельца и группу для всех директорий /var/www :
$ sudo find /var/www -type d -exec chown developer:www-data <> \; -print /var/www /var/www/html /var/www/host1.loc /var/www/host2.locКопировать
Устанавливаем владельца и группу для всех файлов /var/www :
$ sudo find /var/www -type f -exec chown developer:www-data <> \; -print /var/www/html/index.html /var/www/host1.loc/index.php /var/www/host2.loc/index.phpКопировать
Здесь можно обойтись одной командой (но с двумя нагляднее):
$ sudo chown -R developer:www-data /var/wwwКопировать
Устанавливаем права
Устанавливаем права для всех директорий /var/www :
$ sudo find /var/www -type d -exec chmod 755 <> \; -print /var/www /var/www/html /var/www/host1.loc /var/www/host2.locКопировать
- Пользователь developer (разработчик) имеет право на чтение и запись директорий, потому что является их владельцем
- Пользователь www-data (web-сервер) имеет право на чтение директорий, потому что принадлежит к группе www-data
Устанавливаем права для всех файлов /var/www :
$ sudo find /var/www -type f -exec chmod 644 <> \; -print /var/www/html/index.html /var/www/host1.loc/index.php /var/www/host2.loc/index.phpКопировать
- Пользователь developer (разработчик) имеет право на чтение и запись файлов, потому что является их владельцем
- Пользователь www-data (web-сервер) имеет право на чтение файлов, потому что принадлежит к группе www-data
Для наглядности посмотрим на права всех файлов и директорий:
$ cd /var/www $ ls -laR .: итого 20 drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 . drwxr-xr-x 15 root root 4096 ноя 11 09:32 .. drwxr-xr-x 2 developer www-data 4096 ноя 11 09:32 html drwxr-xr-x 3 developer www-data 4096 дек 4 17:50 host1.loc drwxr-xr-x 2 developer www-data 4096 ноя 15 14:56 host2.loc ./html: итого 20 drwxr-xr-x 2 developer www-data 4096 ноя 11 09:32 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 10918 ноя 11 09:32 index.html ./host1.loc: итого 16 drwxr-xr-x 3 developer www-data 4096 дек 4 17:50 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 78 дек 4 17:34 index.php ./host2.loc: итого 12 drwxr-xr-x 2 developer www-data 4096 ноя 15 14:56 . drwxr-xr-x 5 developer www-data 4096 ноя 15 14:54 .. -rw-r--r-- 1 developer www-data 46 ноя 15 14:56 index.php
Читайте также
Big Data & Brews Набрёл на странный канал: ребята пьют крафтовое илитное певко и обсуждают Big Data технологии. Как же я сам до такого не…
Как узнать что пользователь находится в Online в Laravel 5.6 Как можно определить, находится ли сейчас пользователь в Online или нет? Решение подходит для последних версий Laravel. Но пример создавался…
Интересные решения с HighLoad Cup В августе 2017 года Mail.Ru Group провёл чемпионат для backend-разработчиков HighLoad Cup. Суть конкурса проста: используя любой стек технологий написать как можно…
ubuntu linux Как работать с www-data (права для работы с файлами через php apache) — для машины разработчика. Рекомендуемые
— поэтому перед нами стоит задача как-то сделать так, чтобы с php-кодом могли работать и процессы Апача и программы запущенные от имени нашего пользователя (напр. тестовый редактор файлов кода).
Есть два варианта решения этой проблемы:
- 1) Давать права действия с файлами вообще всем (а не только пользователю и группе)
- 2) Добавить своего пользователя в группу, в которой уже состоит пользователь, под которым работает Apache
Первый вариант — плохая практика, т.к. давать права вообще всем пользователям системы не нужно никогда (это нарушения принципа минимальных необходимых привилегий)
Второй вариант — то, что мы и сделаем в данном случае.
Добавляем своего пользователя в группу www-data
Для локальной машины вполне допустимо добавить себя в группу www-data командой:
sudo usermod -G www-data -a $USER
И прелогиниваемся под нашим пользователем в терминале, чтобы добавление группы вступило в силу:
(для этого способа, применение группы сработает только для текущей вкладки терминала, чтобы изменения применились вообще везде — перезагрузите систему)
(то есть в такую под которой работает Apache, это нужно в случае если ваш php установлен как модуль Апач ).
И тогда вам нужно будет просто делать владельцем ресурсов группу/пользователя www-data:www-data (именно под ними работает апач, и php, если он установлен как модуль апача)
— в этом случае, например NetBeans (или composer или другие программы/утилиты) будет запускаться от имени вашего пользователя, а значит, вам часто достаточно будет давать необходимые права группе (часто на запись g+w) и автоматом за счет общей группы с этими файлами смогут работать и php (от имени www-data) и куча программ, которые запускают вами, а значит работают под вашим пользователем.
Видео-пояснения
Если то, что выше неясно, посмотрите видео-пояснения: