Пользователь www data linux

www-data permissions?

So I have a directory in /var/www (called cake) and I need to allow www-data to write to it, but I also want to write to it (without having to use sudo). I’m afraid to change the permissions to 777 in case some other user on my machine (or a hacker) attempts to modify files in that directory. How do I only allow access for myself and Apache’s www-data?

3 Answers 3

sudo chown -R yourname:www-data cake 

First command changes owner and group.

Second command adds s attribute which will keep new files and directories within cake having the same group permissions.

what can the user do with files created by www-data in cake itself, and files created by www-data in a directory which is created by www-data? for example, about edit, rename, delete operations? as i understand, renaming and deleting are not possible inside directory created by www-data, and editing of files creaed by www-data is not possible for user at all.

User setup

So let’s start by adding the main user to the Apache user group:

sudo usermod -a -G www-data demo 

That adds the user ‘demo’ to the ‘www-data’ group. Do ensure you use both the -a and the -G options with the usermod command shown above.

You will need to log out and log back in again to enable the group change.

Check the groups now:

So now I am a member of two groups: My own (demo) and the Apache group (www-data).

Folder setup

Now we need to ensure the public_html folder is owned by the main user (demo) and is part of the Apache group (www-data).

Let’s set that up:

sudo chgrp -R www-data /home/demo/public_html 

As we are talking about permissions I’ll add a quick note regarding the sudo command: It’s a good habit to use absolute paths (/home/demo/public_html) as shown above rather than relative paths (~/public_html). It ensures sudo is being used in the correct location.

If you have a public_html folder with symlinks in place then be careful with that command as it will follow the symlinks. In those cases of a working public_html folder, change each folder by hand.

Setgid

Good so far, but remember the command we just gave only affects existing folders. What about anything new?

We can set the ownership so anything new is also in the ‘www-data’ group.

The first command will change the permissions for the public_html directory to include the «setgid» bit:

sudo chmod 2750 /home/demo/public_html 

That will ensure that any new files are given the group ‘www-data’. If you have subdirectories, you’ll want to run that command for each subdirectory (this type of permission doesn’t work with ‘-R’). Fortunately new subdirectories will be created with the ‘setgid’ bit set automatically.

Читайте также:  Линукс минт ошибка установки

If we need to allow write access to Apache, to an uploads directory for example, then set the permissions for that directory like so:

sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads 

The permissions only need to be set once as new files will automatically be assigned the correct ownership.

Источник

Пользователь и группа 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
Читайте также:  Интерфейс windows linux mac os

Для наглядности посмотрим на права всех файлов и директорий:

$ 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

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (145)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (61)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (139)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Наследовании группы www-data в директории при создании файлов и папок в Ubuntu

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

Создание пользователей

Создаём пользователя. Флаг -m нужен для создания домашней директории пользователя (для ее названия используется имя пользователя)..

useradd -m имя_пользователя 

Для введения пароля нового пользователя или изменения пароля существующего введите в командной строке команду

Позже пользователь сможет изменить свой пароль при помощи команды passwd . Для этого ему понадобится ввести текущий пароль и новый.

Добавление пользователя в группу

Для добавления пользователя в группу используется команда usermod . Давайте добавим пользователя имя_пользователя в группу www-data . Опция -a означает append (добавить, прикрепить), а опция -G служит для указания названия вторичной группы.

usermod -a -G www-data имя_пользователя 

Когда вы создаете пользователя при помощи команды adduser , для него автоматически создается первичная группа, носящая его имя. Поэтому в настоящее время пользователь имя_пользователя состоит в первичной группе имя_пользователя и вторичной www-data .

Также можно добавить пользователя сразу в несколько групп, перечислив их через запятую без пробелов (-G group1,group2,group3).

Читайте также:  Рекурсивное удаление файлов linux

А эта команда изменит первичную группу пользователя имя_пользователя на группу www-data :

usermod -g www-data имя_пользователя 

Задание прав на файлы и папки

Для того, чтобы все файлы в папке и подпапке также имели группу www-data , можно выполнить следующие команды:

sudo chgrp -R www-data польный_путь_к_папке sudo chmod -R g+s польный_путь_к_папке 

Где польный_путь_к_папке — путь к папке, в которой находятся файлы. Первая команда задает группу www-data для всех файлов в папке и подпапках, а вторая команда устанавливает бит setgid для папки, что позволяет новым файлам, созданным в этой папке и подпапках, наследовать группу, установленную для этой папки.

Права доступа

Для предотвращения несанкционированного доступа к файлам и папкам веб-приложения необходимо установить соответствующие права доступа. Например, можно установить права 755 на директорию приложения и права 644 на файлы:

sudo chmod -R 755 польный_путь_к_папке sudo find польный_путь_к_папке -type f -exec chmod 644 > \; -print 

Приветствую вас на сайте ZENCOD.ru! Здесь вы найдете статьи по web-разработке, javascript, linux и прочим темам, которые могут быть полезны.

Источник

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.

Источник

Оцените статью
Adblock
detector