Якщо ми перевіримо право власності на 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, group site1. І кореневий користувач, і група site1 мають дозвіл на запис (плюс права читання та виконання) у каталог. Будь-який користувач, що належить до групового сайту1, буде користуватися всіма привілеями, наданими цій групі.
Тепер увійдіть як user1, перейдіть до каталогу site1 і спробуйте створити файл у цій директорії,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Це не вдалося, оскільки, швидше за все, первинною групою користувача1 є не сайт1. Отже, переходьте до тієї групи.
newgrp - site1
Спробуйте відтворити файл (будьте обережні, що ви перемінили в домашній каталог user1 після зміни групи), це має працювати зараз. Оскільки створені файли матимуть дозвіл на читання у всьому світі, apache (або ваш веб-сервер) не повинні стикатися з будь-якими проблемами доступу до них.
EDIT
Крім того, як вказав dan08 у коментарі, вам потрібно додати www-дані до site1 групи.
sudo adduser www-data site1
У багатьох (не всіх) дистрибутивах www-data - це користувач, під яким працює веб-сервер Apache. Це також означає, що все, що робиться Apache (особливо, включаючи PHP-скрипти), буде виконано з дозволами www-даних користувача (а також групувати www-data) за замовчуванням. WordPress використовує користувацькі www-дані для запису файлів.
Якщо ви хочете побачити, як працює веб-сервер apache, видайте команду,
ps aux | grep apache2 | less