J'ai un répertoire de serveur Web situé à l'adresse /var/www/web
. Dans l'un des fichiers, disons create_dir.php
, je crée un répertoire avec mkdir()
. Je reçois le message suivant.
Avertissement: mkdir (): autorisation refusée dans /var/www/web/create_dir.php à la ligne 122
Maintenant, je peux exécuter ce fichier quand je suis le propriétaire du fichier ou du répertoire. Mais, quand je ne suis pas le propriétaire, je ne peux pas éditer les fichiers dans PhpStorm.
Mon utilisateur s'appelle josh
et l'utilisateur Apache2 est le nom par défaut, www-data
.
J'ai essentiellement besoin de créer un groupe ou un utilisateur spécial/magique qui me permettra d'exécuter et de modifier les fichiers à tout moment.
Note: J'ai regardé ceci réponse du superutilisateur et cela n'a pas fonctionné pour moi. J'ai lancé cette commande pour créer le groupe:
Sudo groupadd website
J'ai couru ces commandes pour ajouter les utilisateurs:
Sudo usermod -a -G website josh
Sudo usermod -a -G website www-data
J'ai lancé cette commande pour l'ajouter au dossier Web:
Sudo chgrp -R website /var/www/web
J'ai exécuté cette commande et une fois que j'ai rechargé mon site Web, j'ai reçu un message d'erreur Forbidden.
Sudo chmod -R 770 /var/www/web
J'ai donc lancé cette commande pour pouvoir afficher la page Web:
Sudo chmod -R 775 /var/www/web
Et maintenant je reviens à la case départ.
Toute aide est appréciée.
Les répertoires partagés sous Linux peuvent être source de confusion en raison de la propriété et des autorisations.
Pour ce répertoire spécifique, /var/www/html/
, il y a déjà une réponse ici
Comment éviter d'utiliser Sudo lorsqu'on travaille dans/var/www?
Faites donc des deux utilisateurs un membre de www-data
. IMHO pas besoin de faire un nouveau groupe.
Pour gérer les autorisations et la propriété des fichiers, définissez le groupe et setGID.
Sudo chgrp -R www-data /var/www/html
Sudo chmod 2770 /var/www/html
Pour plus de détails, voir https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html
... if a directory’s set-group-ID bit is set, newly created subfiles inherit the same group as the directory ...
Redémarrez votre Shell ou déconnectez-vous et reconnectez-vous pour que l'adhésion devienne effective.
Si vous avez besoin d’un contrôle plus fin, vous pouvez utiliser ACL, mais c’est probablement excessif.
Pour plus d'informations sur ACL, voir https://help.ubuntu.com/community/FilePermissionsACLs et http://brunogirin.blogspot.com/2010/shared-folders-in -ubuntu-with-setgid.html
Ce deuxième lien aborde spécifiquement cette question précise, comment partager/var/www/html, à l’aide de setGID et ACL.