D'abord, ajoutez-vous au groupe www-data
usermod -a -G www-data (your username)
Alors:
chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA
Devrait faire l'affaire, à moins que les autorisations sur votre /home/myuser
n'autorisent pas l'accès des autres utilisateurs.
La première commande modifie la propriété du groupe du dossier par celle du serveur Web. La deuxième commande donne aux membres du groupe www-data
les droits de lecture, d’écriture, de répertoire d’entrée et l’indicateur de groupe s
garantira que tous les fichiers créés dans ce répertoire prennent www-data
comme groupe - donc si vous créez un fichier sous la forme myuser
que l'utilisateur www-data
aura accès.
Nb. cela dépend aussi des paramètres umask
de votre compte d'utilisateur et du serveur Web: vous devez vous assurer que les fichiers créés dans folderA ont le groupe rw
access (et les répertoires créés dans le groupe rwx
)
Si votre serveur Web n’a pas de droits d’entrée dans votre répertoire /home/myuser
(tout à fait raisonnable), il ne va pas y entrer sauf si vous faites autre chose. Deux solns:
-
sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA
(c'est un hack moche et il faudrait le répéter après le redémarrage. Mais un truc puissant peut aussi être utilisé pour rendre les dossiers accessibles dans les jails SSH.)
-
Déplacez simplement le dossier partagé ailleurs, par ex. /home/shared-stuff/folderA
.
La 2ème option est la plus belle. Disons que le contenu de folderA est vraiment public et que vous ne vous souciez pas de savoir qui le voit, vous pouvez le configurer comme
sudo mkdir -m777 /home/shared-stuff
Ensuite, vous pouvez mettre à l'intérieur de cela, disons folderA avec les autorisations ci-dessus, et folderB auquel www-data ne devrait pas avoir accès avec différentes autorisations, par ex.
$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data 4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser 4096 Jan 17 21:46 folderB