web-dev-qa-db-fra.com

Apache - Autoriser l'accès aux répertoires personnels des utilisateurs

Je suis coincé avec ce problème depuis une semaine maintenant, en parcourant divers sites Web, je n'arrive pas à faire en sorte que cela fonctionne.

J'ai installé Apache2 et un site Web Wordpress, situé dans le dossier d'un utilisateur à l'adresse /home/<user>/www.

Maintenant, le site Web fonctionne, mais l'installation de plugins à partir de l'interface Web (et de tout autre élément nécessitant un accès en écriture (modification des paramètres, téléchargement de contenu multimédia, etc.) ne fonctionnera pas, car wordpress (plus semblable à Apache) ne fonctionne pas. N'avez pas accès en écriture à ces fichiers.

le répertoire /home/<user>/www et tout ce qui se trouve en dessous appartiennent à l'utilisateur et au groupe <user>.

J'ai déjà essayé plusieurs solutions, mais aucune d'entre elles n'a fonctionné, notamment:

  1. Changer le propriétaire de /home<user>/www en www-data:www-data. Très bien - honnêtement, je n’ai pas essayé cette solution car je ne la voulais pas. Si vous faites cela pour tous les utilisateurs du serveur, ils auront accès à tous les dossiers, mais ils ne devraient pouvoir accéder qu'à leur dossier personnel, pas aux autres.

  2. Ajout de www-data au groupe de l'utilisateur. Je pensais que cela pourrait fonctionner, mais apparemment cela ne fonctionne pas. L'utilisateur www-data est bien dans le groupe d'utilisateurs (vérifié avec la commande id), mais cela ne semble toujours pas fonctionner.

  3. Définition d'une liste de contrôle d'accès sur le répertoire de base de l'utilisateur. Est-ce que cela aussi et donnait www-data rwx accès au répertoire de base, et pourtant il n'a toujours pas aidé.

Si vous êtes intéressé, le répertoire /home/<user>/ et tous les fichiers/répertoires situés en dessous disposent de l'autorisation 775.

3
Skrypt

Bon, alors, après avoir continué à me débattre, j'ai finalement trouvé une solution qui fonctionne pour moi.

Voici ce que j'ai fait: Supposons que j'ai créé un nouvel utilisateur appelé dummy avec son dossier personnel situé à l'adresse /home/dummy et un dossier dédié à sa présentation Web situé à l'adresse /home/dummy/www.

  1. Utilisez Sudo chgrp -R www-data /home/dummy/www pour changer le groupe du répertoire www et tout son contenu en www-data (l'utilisateur par défaut d'Apache pour l'accès Web.).
  2. Utilisez Sudo chmod -R g+wrxs /home/dummy/www pour donner au groupe www-data les autorisations d'écriture, de lecture et d'exécution sur le répertoire spécifié et son contenu. La chose importante ici est la partie s. Cela garantit que le groupe (www-data) devient propriétaire de tout fichier créé dans le répertoire avec le paramètre s.

Pas besoin d'ajouter l'utilisateur dummy à aucun groupe.

J'espère que cela aidera si quelqu'un rencontre le même problème que moi à l'avenir.

EDIT: Après quelques tests supplémentaires, cela ne semble pas suffire. Outre les deux étapes mentionnées ci-dessus, vous devez également expliquer explicitement à wordpress comment travailler avec des fichiers en ajoutant define('FS_METHOD', 'direct'); au fichier de configuration wordpress.

En outre, pour une configuration plus stricte des autorisations, veuillez vous reporter à l'étape 5 du guide Comment installer WordPress de DigitalOcean avec LAMP sous Ubunt .

1
Skrypt