Si nous vérifions la propriété de site1, nous trouverons quelque chose comme ça,
ls -ld /var/www/site1/
drwxr-xr-x 2 root root 4096 Oct 24 21:06 site1/
Cela signifie que le répertoire appartient à l'utilisateur root, root du groupe. Alors que l'utilisateur root a l'autorisation d'écriture (plus les autorisations de lecture et d'exécution) dans le répertoire, le groupe root n'a que des autorisations de lecture et d'exécution.
Nous voudrons changer le propriétaire du groupe en un autre groupe (nouveau) et ajouter user1 à ce groupe particulier. Nous donnerons également la permission d’écriture à ce groupe.
Créer un nouveau groupe,
sudo addgroup site1
Ajouter user1 au groupe nouvellement créé,
sudo adduser user1 site1
Vérifiez que user1 est vraiment dans ce groupe,
groups user1
La sortie devrait être une liste quelque chose comme,
user1 : <other-groups> site1
Maintenant, nous pouvons changer la propriété du groupe de votre répertoire prévu.
sudo chown -vR :site1 /var/www/site1/
changed ownership of '/var/www/site1/' from root:root to :site1
Accordez la permission d’écriture à ce nouveau propriétaire de groupe,
sudo chmod -vR g+w /var/www/site1/
mode of '/var/www/site1/' changed from 0755 (rwxr-xr-x) to 0775 (rwxrwxr-x)
Vérifiez que tous les changements sont bien là,
ls -ld /var/www/site1/
drwxrwxr-x 2 root site1 4096 Oct 24 21:06 /var/www/site1/
Le répertoire appartient désormais à l'utilisateur root, groupe site1. L'utilisateur root et le groupe site1 ont tous deux des droits d'écriture (plus des autorisations de lecture et d'exécution) sur le répertoire. Tout utilisateur appartenant au groupe site1 bénéficiera de tous les privilèges accordés à ce groupe.
Maintenant, connectez-vous en tant qu'utilisateur1, déplacez-vous dans le répertoire site1 et essayez de créer un fichier dans ce répertoire,
echo "My User1 Site" > index.html
bash: index.html: Permission denied
Cela a échoué car le groupe principal de l'utilisateur1 n'est probablement pas le site1. Alors, changez de groupe.
newgrp - site1
Essayez de recréer le fichier (attention, vous avez été déplacé vers le répertoire personnel de l'utilisateur1 après avoir changé de groupe), cela devrait fonctionner maintenant.
Comme les fichiers créés auront une autorisation de lecture mondiale, apache (ou votre serveur Web) ne devrait rencontrer aucun problème pour y accéder.
EDIT
En outre, comme indiqué par dan08 dans les commentaires, vous devez ajouter www-data au groupe site1.
sudo adduser www-data site1
Sur de nombreuses distributions (pas toutes), www-data est l'utilisateur sous lequel le serveur Web Apache s'exécute. Cela signifie également que tout ce qui est fait par Apache (en particulier en incluant les scripts PHP) sera fait avec les permissions de l'utilisateur www-data (et aussi le groupe www-data) par défaut. WordPress utilise l'utilisateur www-data pour écrire des fichiers.
Si vous voulez voir comment fonctionne le serveur Web Apache, lancez la commande,
ps aux | grep apache2 | less