Jeśli sprawdzimy własność witryny 1, znajdziemy coś takiego,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Oznacza to, że katalog jest własnością użytkownika root, grupa root. Podczas gdy root użytkownika ma uprawnienia do zapisu (plus uprawnienia do odczytu i wykonywania) do katalogu, root grupy ma tylko uprawnienia do odczytu i wykonywania.
Będziemy chcieli zmienić własność grupy na inną (nową) grupę i dodać użytkownika 1 do tej konkretnej grupy. Damy również pozwolenie na pisanie tej grupie.
Utwórz nową grupę,
sudo addgroup site1
Dodaj użytkownika 1 do nowo utworzonej grupy,
sudo adduser user1 site1
Sprawdź, czy użytkownik 1 jest naprawdę w tej grupie,
groups user1
Dane wyjściowe powinny być listą w stylu:
user1 : <other-groups> site1
Teraz możemy zmienić własność grupy docelowego katalogu.
sudo chown -vR :site1 /var/www/site1/
changed ownership of `/var/www/site1/' from root:root to :site1
Udziel uprawnienia do zapisu nowemu właścicielowi grupy,
sudo chmod -vR g+w /var/www/site1/
mode of `/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Sprawdź, czy wszystkie zmiany rzeczywiście istnieją,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Tak więc katalog jest teraz własnością użytkownika root, grupy site1. Zarówno użytkownik root, jak i witryna grupy 1 mają uprawnienia do zapisu (oraz uprawnienia do odczytu i wykonywania) do katalogu. Każdy użytkownik należący do grupy site1 będzie korzystać ze wszystkich uprawnień przyznanych tej grupie.
Teraz zaloguj się jako użytkownik1, przejdź do katalogu site1 i spróbuj utworzyć plik w tym katalogu,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Nie powiodło się, ponieważ najprawdopodobniej podstawową grupą użytkownika 1 nie jest witryna1. Przejdź do tej grupy.
newgrp - site1
Spróbuj odtworzyć plik (uwaga, że zostałeś przeniesiony do katalogu domowego użytkownika 1 po zmianie grupy), to powinno działać teraz. Ponieważ utworzone pliki będą miały uprawnienia do odczytu na całym świecie, apache (lub serwer sieciowy) nie powinien mieć problemów z dostępem do nich.
EDYTOWAĆ
Ponadto, jak wskazał Dan08 w komentarzu, musisz dodać dane www do grupy site1.
sudo adduser www-data site1
W wielu (nie wszystkich) dystrybucjach www-data to użytkownik, pod którym działa serwer WWW Apache. Oznacza to również, że wszystko, co robi Apache (szczególnie skrypty PHP), będzie domyślnie wykonywane za zgodą użytkownika danych www (a także grupowania danych www). WordPress używa danych www użytkownika do zapisywania plików.
Jeśli chcesz zobaczyć, jak działa serwer WWW Apache, wydaj polecenie,
ps aux | grep apache2 | less