Если мы проверим право собственности на site1, мы найдем что-то вроде этого,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Это означает, что каталог принадлежит пользователю root, группе root. В то время как пользователь root имеет разрешение на запись (плюс права на чтение и выполнение) в каталог, корень группы имеет только права на чтение и выполнение.
Мы захотим изменить владельца группы на другую (новую) группу и добавить user1 в эту конкретную группу. Мы дадим разрешение на запись и этой конкретной группе.
Создать новую группу,
sudo addgroup site1
Добавьте user1 во вновь созданную группу,
sudo adduser user1 site1
Убедитесь, что user1 действительно в этой группе,
groups user1
Вывод должен быть чем-то вроде списка,
user1 : <other-groups> site1
Теперь мы можем изменить группу владельцев вашего предполагаемого каталога.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Предоставить разрешение на запись новому владельцу группы,
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Убедитесь, что все изменения действительно есть,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Итак, каталог теперь принадлежит пользователю root, группе site1. Пользователь root и группа site1 имеют права на запись (плюс права на чтение и выполнение) в каталог. Любой пользователь, принадлежащий к группе site1, будет пользоваться всеми привилегиями, предоставленными этой группе.
Теперь войдите как user1, перейдите в каталог site1 и попробуйте создать файл в этом каталоге,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Это не удалось, поскольку, скорее всего, основная группа пользователя user1 не site1. Итак, перейдите в эту группу.
newgrp - site1
Попробуйте воссоздать файл (помните, что вы переместились в домашний каталог user1 после смены группы), теперь это должно работать. Поскольку созданные файлы будут иметь мировое разрешение на чтение, apache (или ваш веб-сервер) не должен сталкиваться с какими-либо проблемами при доступе к ним.
РЕДАКТИРОВАТЬ
Также, как отметил dan08 в комментарии, вам нужно добавить www-данные в группу site1.
sudo adduser www-data site1
Во многих (не во всех) дистрибутивах www-data - это пользователь, под которым работает веб-сервер Apache. Это также означает, что все, что делает Apache (особенно включая скрипты PHP), будет выполнено с разрешениями пользовательских www-данных (а также групповыми www-данными) по умолчанию. WordPress использует пользовательские www-данные для записи файлов.
Если вы хотите увидеть, как работает веб-сервер apache, введите команду:
ps aux | grep apache2 | less
Permission denied
Сообщение не связано с «основной группы», а пользователь еще не на самом деле быть в этой группе (насколько OS обеспокоен). Если вы выйдете из системы и вернетесь обратно, она будет работать как положено (без запускаnewgrp - site1
)www-data
групповых прав на запись, если в конечном итоге вам придется добавлятьwww-data
вsite1
любом случае?www-data' write permissions? If that is the question,
www-data 'это не группа, это пользователь. Пожалуйста, дайте мне знать, если я неправильно понял ваш вопрос.Создайте две группы:
site1grp
иsite2grp
Добавьте
www-data
в обе группы.Добавьте user1 и user2 в соответствующие группы
Измените права доступа к папкам вашего сайта, чтобы владельцем пользователя был www-data, а владельцем группы была соответствующая группа.
Теперь
www-data
у пользователя и группы есть разрешения на обоих сайтах, и у каждого пользователя есть права доступа группы для их соответствующего сайта.источник
Для тех, у кого есть корневая папка WordPress в домашней папке:
Ubuntu / апач
Добавьте вашего пользователя в группу www-data:
КРЕДИТ Предоставление прав на запись для группы www-данных
Вы хотите позвонить
usermod
своему пользователю. Так что это будет:Предполагая, что
www-data
группа существуетПроверьте, что ваш пользователь находится в
www-data
группе:Вы должны получить что-то вроде:
yourUserGroupName обычно похоже на ваше имя пользователя
Рекурсивно меняйте групповое владение папкой, сохраняя права пользователя
Измените каталог на ваш WebSiteFolder
Рекурсивно измените групповые разрешения для папок и подпапок, чтобы включить разрешения на запись:
режим
/home/yourUserName/yourWebSiteFolder/'
изменен с0755 (rwxr-xr-x)
на0775 (rwxrwxr-x)
Рекурсивно измените групповые разрешения файлов и вложенных файлов, чтобы включить разрешения на запись:
Результат должен выглядеть примерно так:
Эквивалентно:
Разрешения будут как 664 или 775.
источник
Вы должны создать новую группу для так называемого «нового пользователя», а затем добавить в эту группу www-data и «нового пользователя»:
Затем вы можете изменить владельца на
new_user
и сгруппировать вnew_group
:Тогда вам нужно будет предоставить доступ на уровне группы к сайту1. www-data все равно будет иметь доступ к сайту, потому что он принадлежит new_group, а new_user не сможет получить доступ к site2, потому что он не будет принадлежать к группе www-data, которой принадлежит site2.
источник
chmod
)? В вашем ответе нигде не упоминается режим, который может повлиять на безопасность (или сломать вещи).chmod
) путем отмены всех разрешений для ДРУГИХ.Предполагая, что все файлы уже принадлежат
www-data
пользователю (вы можете проверить это с помощьюls -slah
команды), который принадлежитwww-data
группе (следующий столбец после имени пользователя в списке файлов), вы можете просто добавить своего пользователя в ту жеwww-data
группу, чтобы разрешить редактирование этих файловдля существующего пользователя, или
для вновь созданного
источник