Si nous vérifions la propriété de site1, nous trouverons quelque chose comme ceci,
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, au groupe root. Bien que l'utilisateur root dispose d'autorisations en écriture (plus les autorisations de lecture et d'exécution) sur le répertoire, le groupe root dispose uniquement des autorisations de lecture et d'exécution.
Nous voudrons changer la propriété du groupe en un autre (nouveau) groupe et ajouter utilisateur1 à ce groupe particulier. Nous donnerons également une permission en écriture à ce groupe particulier.
Créer un nouveau groupe,
sudo addgroup site1
Ajouter utilisateur1 au groupe nouvellement créé,
sudo adduser user1 site1
Vérifiez que l'utilisateur1 est vraiment dans ce groupe,
groups user1
La sortie devrait être une liste quelque chose comme,
user1 : <other-groups> site1
Nous pouvons maintenant 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
Accorder l'autorisation d'écriture à ce nouveau propriétaire du 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/
Ainsi, le répertoire appartient maintenant à l'utilisateur root, groupe site1. L'utilisateur root et le groupe site1 ont tous deux l'autorisation d'écriture (plus les 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, accédez au 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 d'utilisateur1 n'est probablement pas le site1. Alors, changez pour ce groupe.
newgrp - site1
Essayez de recréer le fichier (sachez que vous avez été déplacé dans le répertoire de base de l'utilisateur1 après avoir changé de groupe), cela devrait fonctionner maintenant. Puisque les fichiers créés auront l’autorisation de lecture universelle, Apache (ou votre serveur Web) ne devrait rencontrer aucun problème pour y accéder.
MODIFIER
De plus, comme l'a souligné dan08 dans un commentaire, 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 que fait Apache (notamment les scripts PHP) sera effectué par défaut avec les autorisations de l'utilisateur www-data (et du groupe www-data) également. 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