web-dev-qa-db-fra.com

Autorisations de fichiers recommandées

Hé les gars, je passe le plus de temps à essayer de résoudre ce problème. Je voudrais savoir à quoi les autorisations de fichiers devraient ressembler dans WordPress afin d’utiliser la fonctionnalité de mise à jour automatique . À partir de maintenant, mon installation wordpress continue à me demander des informations sur mon FTP et je ne veux pas utiliser cette méthode de mise à niveau/installation, je veux utiliser du PHP pur/direct.

Un peu de contexte:

  • les démons serveur web et php fcgi sont exécutés sous la forme www-data:www-data
  • l'installation de WordPress est à /home/blaenk/sites/domain.tld/

Au début, je lisais que tous les fichiers/dossiers devaient appartenir à mon utilisateur (blaenk) et être inscriptibles par mon utilisateur. Mais cela ne fonctionnait pas. Après avoir passé de nombreuses heures à effectuer des recherches, quelqu'un sur le canal IRC m'a dit d'essayer de régler tout sur la propriété www-data:www-data et cela a fonctionné. On ne m'a plus demandé d'informations FTP et l'installation du plugin a fonctionné automatiquement.

Cependant, j’ai initialement placé les fichiers du site dans mon répertoire personnel précisément parce que je souhaitais pouvoir les écrire/créer en tant qu’utilisateur. Je me suis même ajouté au répertoire www-data comme indiqué dans ce guide .

Question

Je sais déjà que les fichiers doivent être au nombre de 644 et les répertoires au nombre de 755. Toutefois, cela semble davantage un problème de propriété. Je ne veux pas avoir à définir www-data:www-data sur tout ce qui se trouve dans mon installation de wordpress, alors je me demande quels fichiers/répertoires requièrent spécifiquement ce niveau de propriété?

EDIT: Je crois que la raison pour laquelle tout semble fonctionner sur mon installation wordpress d’hébergement partagé, en dépit du fait que tous les fichiers appartiennent à mon utilisateur, c’est que l’hôte partagé que j’utilise semble utiliser suexec qui utilise vraisemblablement PHP comme moi, autrement dit, les fichiers are détenus par le serveur Web, pour ainsi dire.

4
Jorge Israel Peña

Dans ma question, j'ai confondu le fait que tout fonctionnait parfaitement sur mon hébergement partagé, même si tous les fichiers étaient détenus par mon utilisateur, alors que sur mon VPS, la mise à niveau automatique ne fonctionnerait que si tous les fichiers appartenaient au serveur Web.

Je suis à peu près certain que cela résulte de mon hôte partagé qui utilise suexec , qui exécute essentiellement les scripts en tant qu'utilisateur. En résumé, les fichiers de mon hôte partagé étaient détenus par le "serveur Web" (en réalité, le démon CGI).

En fait, j'utilise nginx et php-fpm sur mon VPS, je n'ai donc pas accès au suexec d'Apache. Cependant, j'ai simplement configuré php-fpm pour qu'il fonctionne comme moi, afin de tester ma théorie, et cela fonctionnait de manière transparente avec tous les fichiers appartenant à mon utilisateur. Je pense que cela constituerait un risque pour la sécurité (pas certain), je vais donc étudier plus avant pour voir ce que je peux faire à cet égard pour éviter de l'exécuter en tant qu'utilisateur, mais au moins, je sais maintenant quel est le problème!

1
Jorge Israel Peña

Pour autant que je sache, cela n’est pas lié à des autorisations spécifiques. La mise à jour automatique globale nécessite que le propriétaire des fichiers corresponde à l’utilisateur Apache exécuté sous . Si ce n'est pas le cas, il utilise d'autres méthodes de système de fichiers (FTP, SSH) et demande un mot de passe.

Vous pouvez définir les informations d'identification dans les constantes dans wp-config.php afin de ne pas être invité à les saisir.

Voir Constantes de mise à niveau WordPress dans Codex.

7
Rarst
  1. En supposant que vous ayez un accès ssh, commencez par obtenir "l'utilisateur". Le serveur Web tourne souvent en tant que www-data mais si vous n'êtes pas sûr, lancez top et vous pourrez voir le "USER" de php, nginx, etc.

  2. Cette étape est évidente, mais trouvez où sont vos fichiers. Habituellement, vos fichiers sont sous /home/www-data/ mais j’ai remarqué que nginx utilisera par défaut un autre répertoire dont je ne me souviens plus pour le moment. Dans tous les cas, cd dans le répertoire qui contient tous vos domaines.

  3. chown -R www-data:www-data example.com Ceci modifie de manière récursive la propriété de tous les fichiers du répertoire exemple.com. Très probablement, cela ne casse rien.

Habituellement, les fichiers sont déjà configurés avec la permission appropriée, mais après avoir hébergé des dizaines de sociétés, je peux vous dire que les autorisations sont parfois modifiées par les administrateurs système par accident, c'est tout simplement une réalité. Par exemple, le montage avec sshfs peut changer la propriété.

0
PJ Brunet

Vos expériences "mixtes" viennent probablement du fait que vos deux utilisateurs en question appartiennent au même groupe ou non. Et bien sûr, quels "droits de groupe" sont apparus

Traditionnellement en php, l'utilisateur php (alias apacheuser ou webuser ou cgideamon) n'a pas le droit de modifier les fichiers, ce que seul l'utilisateur ftp (ou "votre compte utilisateur" dans certaines descriptions de codex) peut rendre plus difficile la sécurité des exploitations de sécurité.

Ce qui bien sûr rend impossible toute mise à jour basée sur php des fichiers php. Ainsi, avec PHP en général, il est courant de changer la propriété du fichier d'un utilisateur FTP à un utilisateur php. Avant de le faire, il convient de noter que la "mise à jour" se produit sous la forme de "chaussures FTP" (lorsque vous donnez les informations d'identification). Ensuite, le décompression des zips téléchargés se produit éventuellement bien sûr à nouveau par des moyens de script ... eh bien, et puis il y a le dossier wp-content, qui doit certainement être touché et complété au moyen de scripts php ... (je suppose que nous avons tous trébuché une fois à propos de cette question dans WP) Les choses peuvent devenir compliquées.

en bref: WordPress 'Le codex a une assez bonne vue d'ensemble dans Durcissement des autorisations de fichiers pour être aussi "gourmand"/"sûr" avec les autorisations de fichiers accordées autant que possible. Par user account, ils désignent un compte FTP (pas le cgi deamon/php user/...).

0
Frank Nocke