Linux www data root

Grant a user permissions on www-data owned /var/www

I have a simple web server setup for some websites, with a layout something like: site1: /var/www/site1/public_html/ site2: /var/www/site2/public_html/ I have previously used the root user to manage files, and then given them back to www-data when I was done (WordPress sites, needed for WP Uploads to work). This probably isn’t the best way. I’m trying to find a way to create another user (lets call it user1) that has permission to edit files in site1, but not site2, and doesn’t stop the files being ‘owned’ by www-data . Is there any way for me to do this?

6 Answers 6

If we check ownership of site1, we will find something like this,

ls -ld /var/www/site1/ drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/ 

This means that the directory is owned by user root, group root. While user root has write permission (plus read and execute permissions) to the directory, group root has only read and execute permissions.

We will want to change the group ownership to another (new) group and add user1 to that particular group. We will give write permission to that particular group as well.

Add user1 to the newly created group,

Check that user1 is really in that group,

The output should be a list something like,

Now we can change the group ownership of your intended directory.

sudo chown -vR :site1 /var/www/site1/ changed ownership of `/var/www/site1/' from root:root to :site1 

Grant write permission to this new group owner,

sudo chmod -vR g+w /var/www/site1/ mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x) 

Check that all the changes are indeed there,

ls -ld /var/www/site1/ drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/ 

So, the directory now is owned by user root, group site1. Both user root and group site1 have write permission (plus read and execute permissions) to the directory. Any user belonging to group site1 will enjoy all the privileges granted to that group.

Now login as user1, move to site1 directory and try to create a file in that directory,

echo "My User1 Site" > index.html bash: index.html: Permission denied 

This failed since most likely the primary group of user1 is not site1. So, change to that group.

Try to recreate the file (beware that you have been moved to the home directory of user1 after changing group), this should work now. Since the created files will have world read permission, apache (or your web server) should not face any problem accessing them.

Also, as pointed out by dan08 in comment, you need to add www-data to site1 group.

sudo adduser www-data site1 

On many (not all) distributions, www-data is the user under which the Apache web server runs. This also means that everything done by Apache (especially including PHP scripts) will be done with the permissions of user www-data (and also group www-data) by default. WordPress uses the user www-data to write files.

Читайте также:  Linux as network switch

If you want to see how apache web server is running, issue the command,

ps aux | grep apache2 | less 

Источник

Как настроить разрешения linux для папки WWW

Директория /var/www принадлежит root:root, что означает, что никто не может ее использовать и она совершенно бесполезна. Поскольку мы все хотим, чтобы веб-сервер действительно работал (и никто не должен входить в систему под именем «root»), то нам нужно это исправить.

Доступ нужен только двум сущностям.

PHP/Perl/Ruby/Python нуждаются в доступе к папкам и файлам, поскольку они создают их множество (например, /uploads/). Эти скриптовые языки должны работать под nginx или apache (или даже под чем-то другим, например, FastCGI для PHP).

Я знаю, что 777 — это полное разрешение на чтение/запись/исполнение для владельца/группы/гостей. Так что это не кажется правильным, поскольку дает случайным пользователям полные разрешения.

Какие разрешения нужно использовать на /var/www, чтобы:

Обеспечить контроль исходных текстов, например , для git или svn.

Пользователям в группе типа «websites» (или даже добавленные в «www-data») .

Серверы типа apache или lighthttpd и PHP/Perl/Ruby.

Которые могут читать, создавать и запускать файлы (и каталоги) там?

Если я правильно понимаю, скрипты Ruby и PHP не «выполняются» напрямую — они передаются интерпретатору. Поэтому нет необходимости в разрешении execute для файлов в /var/www. Поэтому кажется, что правильным разрешением будет chmod -R 1660, которое сделает все файлы, доступные для совместного использования этими четырьмя сущностями.

Правильно ли это?

Дополнение 1: Я только что понял, что файлы и каталоги могут нуждаться в разных разрешениях — я говорил о файлах выше, поэтому я не уверен, какими должны быть разрешения для каталогов.

Дополнение 2: Структура папок /var/www сильно меняется, поскольку одна из четырех вышеупомянутых сущностей постоянно добавляет (и иногда удаляет) папки и подпапки на много уровней вглубь. Они также создают и удаляют файлы, доступ к которым на чтение/запись может понадобиться другим трем сущностям. Поэтому разрешения должны выполнять четыре вышеуказанные функции как для файлов, так и для каталогов. Поскольку ни одному из них не нужно разрешение, я бы предположил, что разрешение rw-rw-r— — это все, что нужно, и это совершенно безопасно, поскольку эти четыре сущности управляются доверенными лицами, а все остальные пользователи в системе имеют доступ только на чтение.

Дополнение 3: Для персональных машин для разработки и частных серверов компании. Никаких случайных «веб-клиентов», как на общем хосте.

Дополнение 4: Я (кажется) , наконец-то , нашел способ заставить все это работать. Однако я не знаю, является ли это правильным и безопасным способом сделать это. Поэтому я объявил конкурс. Победит тот, кто предложит лучший способ защиты и управления www-директорией.

Ответ 1

  1. sudo usermod -a -G developer user1 (добавьте каждого пользователя в группу разработчиков) ;
  2. sudo chgrp -R developer /var/www/site.com/, чтобы разработчики могли там работать ;
  3. sudo chmod -R 2774 /var/www/site.com/, чтобы только разработчики могли создавать/редактировать файлы (остальные могут читать) ;
  4. sudo chgrp -R www-data /var/www/site.com/uploads, чтобы www-data (apache/nginx) мог создавать загрузки.

Ответ 2

  1. /var/www содержит папку для каждого сайта.
  2. Каждый сайт имеет назначенного владельца, который устанавливается как владелец всех файлов и папок в каталоге сайта.
  3. Все пользователи, которые поддерживают сайт, объединяются в группу для этого сайта.
  4. Эта группа назначается владельцем всех файлов и папок в каталоге.
  5. Любые файлы и папки, которые должны быть записаны веб-сервером (т. е. PHP), имеют владельца www-data, пользователя, под которым работает apache.
Читайте также:  Linux home media center

Ответ 3

После проведения дополнительных исследований выяснилось, что инструменты git/svn НЕ являются проблемой, поскольку они запускаются под тем пользователем, который их использует ( о днако демоны git/svn — это совсем другое дело!) . Все, что я создавал/клонировал с помощью git, имело мои права доступа, а инструмент git был указан в /usr/bin, что соответствует этому тезису.

Разрешения git доступны.

Разрешения пользователей, похоже, можно обеспечить, добавив всех пользователей, которым нужен доступ к каталогу www, в группу www-data, от имени которой работает apache (и nginx). Итак, похоже, что один из ответов на этот вопрос выглядит следующим образом:

По умолчанию /var/www принадлежит root:root , и никто не может добавлять или изменять там файлы.

1) Изменить владельца группы

Сначала нам нужно изменить группу каталога www так, чтобы она принадлежала группе «www-data», а не группе «root» .

sudo chgrp -R www-data /var/www

2) Добавить пользователей в www-data

Затем нам нужно добавить текущего пользователя (и всех остальных) в группу www-data .

sudo usermod -a -G www-data demousername

3) Изменить права доступа к каталогу www

Измените разрешения так, чтобы ТОЛЬКО владелец (root) и все пользователи из группы «www-data» могли rwx (читать/писать/исполнять) файлы и каталоги (никто другой не должен иметь к ним доступа).

sudo chmod -R 2770 /var/www

Теперь все файлы и каталоги, созданные любым пользователем, имеющим доступ (т. е. входящим в группу «www-data»), будут доступны для чтения/записи apache и, следовательно, php.

Ответ 4

Привязка — это не наследование прав доступа. Привязка каталога означает, что только владелец файла или владелец каталога может переименовать или удалить этот файл в каталоге, несмотря на то, что разрешения говорят об обратном. Таким образом, 1777 на /tmp/.

В классическом Unix нет наследования прав доступа, основанного на файловой системе, только на umask текущего процесса. В *BSD или Linux с setgid на каталоге групповое поле вновь созданных файлов будет установлено таким же, как и в родительском каталоге. Для чего-то большего вам нужно изучить ACL, с ACL «по умолчанию» на каталогах, которые позволяют вам иметь наследуемые разрешения. Вы должны начать с определения: * какие пользователи имеют доступ к системе * , какова ваша модель угроз.

Например, если вы занимаетесь веб-хостингом с несколькими клиентами и не хотите, чтобы они видели файлы друг друга, то вы можете использовать общую группу «webcusts» для всех этих пользователей и режим каталога 0705. Тогда файлы, обслуживаемые процессом веб-сервера (не в «webcusts»), будут видеть Other perms и будут разрешены; клиенты не смогут видеть файлы друг друга, а пользователи смогут работать со своими собственными файлами. Однако это означает, что , когда вы разрешаете CGI или PHP, вы должны убедиться, что процессы запускаются от имени конкретного пользователя (хорошая практика в любом случае для нескольких пользователей на одном хосте, для отчетности). В противном случае клиенты могут испортить файлы друг друга, поручив это CGI.

Читайте также:  Linux build kernel headers

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

Ответ 5

Владельцем файла должен быть тот, кто его создает, а группа должна быть www-data. Режим для каталогов/файлов в общем случае будет 755/644. Если для каталогов и файлов группе нужен доступ на запись, то режим будет 775/664. Предположим, что paddy является разработчиком. В целом это дает следующее:

chown -R paddy:www-data /var/www/websiteindevelopment

chmod -R 755 /var/www/websiteindevelopment

chmod -R 775 /var/www/websiteindevelopment/directorywritablebygroup

find /var/www/websiteindevelopment -type f -perm 755 -print -exec chmod 644 <> \;

find /var/www/websiteindevelopment -type f -perm 775 -print -exec chmod 664 <> \;

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Permission difference between root root and www-data root

In Linux and Unix, everything is a file. Directories are files, files are files and devices are files. Devices are usually referred to as a node; however, they are still files. All of the files on a system have permissions that allow or prevent others from viewing, modifying or executing.

the permissions are as follows for user, group and others

owner = Read & Write (rw-) group = Read (r--) other = Read (r--) 

only user have read, write permission,i.e

owner = Read & Write (rw-) group = None (---) other = None (---) 
-rw-r--r-- 1 root root 1502 May 14 23:06 file1.css 

This file root root is owned by the user root which as you can see is specified by being in the file owner column of the listing. The second reference to root is in the 4th column of the listing. That is the column that is showing the group owner of the file. The group owner is root.

-rw------- 1 www-data root 894 Mar 28 01:10 file2.html 

As specified by what’s shown in the 3rd column, this file is owned by the username www-data . as you can see, the group owner of the second file is root .

You have usernames (user id) and group names (group id) for who owns files in Unix/Linux. The names of the user and group can be the same, or they can be different. Using the Long Listing of ls ( ls -l ), you can see this type of detail about the file.

Quick answer

In short, the difference is the specific userid owner and group id owner . They are different in the two files.

Below is more details about the listing. A significant characteristic of the files is specified in column one of the listing. It is showing the type of permission given to the file, such as read, write, and execution.

Column explanation

  1. Permissions
  2. Number of links
  3. User
  4. Group
  5. Size
  6. Month Modified
  7. Date Modified
  8. Time Modified
  9. File or Directory Name

Источник

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