Corriger les permissions de fichiers pour WordPress

j'ai regardé ici mais je n'ai pas trouvé de détails sur les meilleures permissions de fichiers. J'ai également pris un coup d'oeil à certaines des questions du formulaire WordPress sur ici aussi mais toute personne qui suggère 777 a évidemment besoin d'une petite leçon de sécurité.

en résumé, ma question Est la suivante. Quelles permissions devrais-je avoir pour ce qui suit:

  1. dossier racine stockant tout le contenu WordPress
  2. wp-admin
  3. wp-content
  4. wp-includes

et ensuite tous les fichiers de chacun de ces dossiers?

304
demandé sur Farkie 2013-08-21 12:39:57

15 réponses

lorsque vous configurez WP vous (le serveur web) peut avoir besoin d'un accès en écriture aux fichiers. Il se peut donc que les droits d'accès doivent être lâches.

chown www-data:www-data  -R * # Let Apache be owner
find . -type d -exec chmod 755 {} \;  # Change directory permissions rwxr-xr-x
find . -type f -exec chmod 644 {} \;  # Change file permissions rw-r--r--

après la configuration , vous devrait resserrer les droits d'accès , selon durcissement WordPress tous les fichiers à l'exception de wp-contenu doit être accessible en écriture par votre compte utilisateur seulement. le contenu de wp doit également pouvoir être écrit par www-data .

chown <username>:<username>  -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let apache be owner of wp-content

peut-être que vous voulez changer le contenu dans wp-content plus tard. Dans ce cas, vous pouvez

  • passer temporairement à l'utilisateur www-data avec su ,
  • donner wp-content groupe d'accès en écriture 775 et rejoindre le groupe www-data ou
  • donnez à votre utilisateur les droits d'accès au dossier en utilisant ACLs .

quoi que vous fassiez, assurez-vous que les fichiers ont des permissions rw Pour www-data .

346
répondu ManuelSchneid3r 2017-01-03 20:09:28

donner l'accès complet à tous les fichiers wp à l'utilisateur www-data (qui est dans ce cas l'utilisateur du serveur web) peut être dangereux. Donc plutôt faire pas faire ceci:

chown www-data:www-data -R *

il peut être utile cependant au moment où vous installez ou mettez à niveau WordPress et ses plug-ins. Mais lorsque vous avez terminé, ce n'est plus une bonne idée de garder wp fichiers détenus par le serveur web.

il permet essentiellement au serveur web de mettez ou écrasez n'importe quel fichier dans votre site web. Cela signifie qu'il y a une possibilité de reprendre votre site si quelqu'un arrive à utiliser le serveur web (ou un trou de sécurité dans certains .PHP script) pour mettre quelques fichiers dans votre site web.

pour protéger votre site contre une telle attaque, vous devez à ce qui suit:

tous les fichiers doivent être détenus par votre compte utilisateur, et doivent être accessibles en écriture par vous. Tout fichier qui a besoin d'un accès en écriture à partir de WordPress devrait être accessible en écriture par le serveur web, si votre hébergement configurer l'exige, que peut signifier que ces fichiers doivent être détenus par le compte utilisateur utilisé par le processus du serveur web.

/

le répertoire WordPress root: tous les fichiers doivent être accessibles en écriture uniquement par votre compte utilisateur, sauf .htaccess si vous voulez WordPress pour générer automatiquement des règles de réécriture pour vous.

/wp-admin/

la zone D'administration de WordPress: tous les fichiers doivent être accessibles en écriture uniquement par votre compte utilisateur.

/wp-includes/

le gros de la logique D'application WordPress: tous les fichiers doivent être accessibles en écriture uniquement par votre compte utilisateur.

/wp-content/

contenu fourni par l'utilisateur: destiné à être accessible en écriture par votre compte utilisateur et le processus du serveur web.

Dans /wp-content/ vous trouverez:

/wp-content/themes/

fichiers de Thème. Si vous voulez utiliser l'éditeur de thème intégré, tous les fichiers doivent être accessibles en écriture par le processus du serveur web. Si vous n'avez pas vous voulez utiliser l'éditeur de thème intégré, tous les fichiers peuvent être en écriture seulement par votre compte d'utilisateur.

/wp-content/plugins/

fichiers Plugin: tous les fichiers doivent être accessibles en écriture uniquement par votre compte utilisateur.

les autres répertoires qui peuvent être présents avec /wp-content/ devraient être documenté par n'importe quel plugin ou thème Les nécessite. Les autorisations peuvent varier.

Source et informations complémentaires: http://codex.wordpress.org/Hardening_WordPress

49
répondu Kornel 2014-10-18 16:49:36

pour ceux qui ont leur dossier racine wordpress sous leur dossier home:

* * Ubuntu / apache

  1. ajouter votre utilisateur à www-data group:

crédit octroi de permissions en écriture au groupe de données www

vous voulez appeler usermod sur votre utilisateur. Ce serait donc:

sudo usermod -aG www-data yourUserName

* * en supposant que www-data groupe existe

  1. Vérifier votre nom d'utilisateur dans www-data groupe:

    groups yourUserName

Vous devriez obtenir quelque chose comme:

youUserName : youUserGroupName www-data

* * youUserGroupName est généralement similaire à votre nom d'utilisateur

  1. changement récursif de propriété de groupe du dossier wp-content garder votre propriété d'utilisateur

    chown yourUserName:www-data -R youWebSiteFolder/wp-content/*

  2. Changer de répertoire pour youWebSiteFolder/wp-content/

    cd youWebSiteFolder/wp-content

  3. modifier de façon récursive les permissions de groupe des dossiers et des sous-dossiers pour activer les permissions d'écriture:

    find . -type d -exec chmod -R 775 {} \;

** mode de `/home/nom d'utilisateur/youWebSiteFolder/wp-content/ " a changé de 0755 (rwxr-xr-x) à 0775 (rwxrwxr-x)

  1. modifiez récursivement les permissions de groupe des fichiers et des sous-fichiers pour activer les permissions d'écriture:

    find . -type f -exec chmod -R 664 {} \;

le résultat devrait ressembler à quelque chose comme:

WAS:
-rw-r--r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html
CHANGED TO:
-rw-rw-r--  1 yourUserName www-data  7192 Oct  4 00:03 filename.html

équivalent à:

chmod-R ug+RW foldername

Permissions seront comme 664 les fichiers ou 775 pour les répertoires.

P. S. si quelqu'un rencontre une erreur 'could not create directory' lors de la mise à jour d'un plugin, faites:

server@user:~/domainame.com$ sudo chown username:www-data -R wp-content

lorsque vous êtes à la racine de votre domaine.

En supposant que: wp-config.php a

informations d'identification FTP sur LocalHost

define('FS_METHOD','direct');

21
répondu Jadeye 2017-04-13 12:37:31

je définir des autorisations pour:

    # Set all files and directories user and group to wp-user
    chown wp-user:wp-user -R *

    # Set uploads folder user and group to www-data
    chown www-data:www-data -R wp-content/uploads/

    # Set all directories permissions to 755
    find . -type d -exec chmod 755 {} \;

    # Set all files permissions to 644
    find . -type f -exec chmod 644 {} \;

dans mon cas, j'ai créé un utilisateur spécifique pour WordPress qui est différent de l'utilisateur par défaut apache qui empêche l'accès à partir du web à ces fichiers appartenant à cet utilisateur.

permet ensuite à l'utilisateur apache de gérer le dossier de téléchargement et de définir enfin des permissions de fichiers et de dossiers suffisamment sécurisés.

ÉDITÉ

si vous êtes en utilisant W3C Cache Total vous devriez faire le suivant aussi:

chmod 777 wp-content/w3tc-config
chmod 777 wp-content/cache

rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced

alors ça marchera!

ÉDITÉ

après un long développement de sites WordPress, je recommande différentes permissions de fichiers par Environnement:

en production, Je ne donnerais pas accès aux utilisateurs pour modifier le système de fichiers, je leur permettrai seulement de télécharger des ressources et de donner accès à des dossiers spécifiques aux plugins à faire sauvegardes, etc. Mais gérer des projets sous Git et utiliser des clés de déploiement sur le serveur, ce n'est pas une bonne mise à jour des plugins sur la mise en scène ou la production. Je laisse ici la configuration du fichier de production:

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/

www-data:www-data = apache ou nginx utilisateur et de groupe

Staging partagera les mêmes permissions de production qu'il devrait en être un clone.

enfin, l'environnement de développement aura accès à la mise à jour plugins, traductions, tout...

# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes

# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin

www-data:www-data = apache ou nginx utilisateur et de groupe votre-utilisateur:root-groupe = votre actuel de l'utilisateur et le groupe racine

ces permissions vous donneront accès à développer sous les dossiers themes et your-plugin sans demander la permission. Le reste du contenu sera la propriété de L'utilisateur Apache ou Nginx pour permettre à WP de gérer le système de fichiers.

avant de créer un git repo, Lancez d'abord ces commandes:

# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
13
répondu Pablo Ezequiel Leone 2017-03-07 22:11:31

permissions correctes pour le fichier est 644 Les permissions correctes pour le dossier sont 755

pour modifier les permissions , utilisez le terminal et les commandes suivantes.

find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;

755 pour les dossiers et 644 pour les fichiers.

9
répondu Kappa 2016-06-13 11:23:41

mieux lire la documentation wordpress sur ce https://codex.wordpress.org/Changing_File_Permissions

  • tous les fichiers doivent appartenir au compte de l'utilisateur réel, et non au compte d'utilisateur utilisé pour le processus httpd
  • La propriété du groupe
  • n'est pas pertinente, à moins qu'il n'y ait des exigences de groupe spécifiques pour la vérification des permissions de processus du serveur web. Ce n'est généralement pas le cas.
  • tous les répertoires doivent être 755 ou 750.
  • tous les fichiers doivent être 644 ou 640. Exception: wp-config.php devrait être 440 ou 400 pour empêcher les autres utilisateurs sur le serveur de le lire.
  • aucun répertoire ne devrait jamais être donné 777, même télécharger des répertoires. Puisque le processus php est exécuté en tant que propriétaire des fichiers, il obtient les permissions des propriétaires et peut même écrire dans un répertoire 755.
8
répondu PodTech.io 2017-11-30 10:59:16

je pense que les règles ci-dessous sont recommandées pour un site wordpress par défaut:

  • Pour les dossiers à l'intérieur de wp-content, définissez les permissions 0755:

    chmod -R 0755 plugins

    chmod-R 0755 uploads

    chmod -R 0755 de mise à niveau

  • que l'utilisateur apache soit le propriétaire des répertoires ci-dessus de wp-content:

    chown apache uploads

    chown apache mise à niveau

    chown apache plugins

7
répondu shasi kanth 2015-03-27 11:10:45

cela dépend en fait des plugins que vous prévoyez d'utiliser car certains plugins changent le document racine de wordpress. mais généralement je recommande quelque chose comme ça pour le répertoire wordpress.

cela assignera le" root "(ou quel que soit l'utilisateur que vous utilisez) comme utilisateur dans chaque fichier/dossier, R signifie récursif, donc il ne s'arrête pas au dossier" html". si vous n'avez pas utilisé R, alors il ne s'applique qu'au répertoire "html".

sudo chown -R root:www-data /var/www/html  

cette option positionne le propriétaire/groupe de "wp-content" sur "www-data" et permet ainsi au serveur web d'installer les plugins via le panneau d'administration.

chown -R www-data:www-data /var/www/html/wp-content

cela va définir la permission de chaque fichier dans le dossier "html" (y compris les fichiers dans les sous-répertoires) à 644, de sorte que les personnes extérieures ne peuvent pas exécuter n'importe quel fichier, Modifier n'importe quel fichier, le groupe ne peut pas exécuter n'importe quel fichier, Modifier n'importe quel fichier et seulement l'utilisateur est autorisé à modifier/lire des fichiers, mais même l'utilisateur ne peut pas exécuter n'importe quel fichier. Ceci est important parce qu'il empêche tout type d'exécution dans le dossier "html", aussi depuis que le propriétaire du dossier html et tous les autres dossiers à l'exception du dossier wp-content sont "root" (ou votre utilisateur), le www-data ne peut pas modifier n'importe quel dossier à l'extérieur du dossier wp-content, donc même s'il y a une vulnérabilité dans le serveur web, et si quelqu'un a accédé au site sans autorisation, ils ne peuvent pas supprimer le site principal sauf le greffon.

sudo find /var/www/html -type f -exec chmod 644 {} +

ceci limitera la permission d'accès à " wp-config.php" utilisateur/groupe rw-r----- ces autorisations.

chmod 640 /var/www/html/wp-config.php

et si un plugin ou une mise à jour se plaint qu'il ne peut pas mettre à jour, alors accéder au SSH et utiliser cette commande, et accorder la permission temporaire à "www-data" (serveur web) pour mettre à jour/installer par le biais du panneau d'administration, puis revenir à la "racine" ou votre utilisateur une fois qu'il est terminé.

chown -R www-data /var/www/html

et dans Nginx (même procédure pour l'apache)pour protéger le dossier wp-admin de l'accès non autorisé, et le sondage. apache2-utils est nécessaire pour crypter le mot de passe même si vous avez NGINX installé, omettez c si vous prévoyez d'ajouter plus d'utilisateurs dans le même fichier.

sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName

visitez maintenant cet endroit

/etc/nginx/sites-available/

utilisez ceci codes pour protéger le dossier" wp-admin "avec un mot de passe, maintenant il va demander le mot de passe/nom d'utilisateur si vous avez essayé d'accéder au"wp-admin". avis, ici, vous utilisez le ".htpasswd" fichier qui contient le mot de passe crypté.

location ^~ /wp-admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    index  index.php index.html index.htm;
}

redémarrez maintenant le nginx.

sudo /etc/init.d/nginx restart
6
répondu Liyanage 2017-01-12 13:15:49

commandes:

chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

où ftp-utilisateur est ce que l'utilisateur que vous utilisez pour télécharger les fichiers""

chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content
3
répondu Iacob Vlad-George 2016-07-06 11:24:36

Je ne peux pas vous dire si c'est correct ou non, mais j'utilise une image Bitnami sur le moteur D'application Google Compute. J'ai eu des problèmes avec les plugins et la migration, et après avoir encore gâché les choses avec les permissions de chmod'ing, j'ai trouvé ces trois lignes qui ont résolu tous mes problèmes. Je ne sais pas si c'est la bonne façon mais ça a marché pour moi.

sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;
1
répondu wayofthefuture 2016-05-27 19:19:05

pour OS X utilisez cette commande:

sudo chown -R www:www /www/folder_name
1
répondu Abduhafiz 2016-09-06 15:35:20

pour être absolument sûr que votre site web est sécurisé et que vous utilisez les bonnes permissions pour vos dossiers, utilisez un plugin de sécurité comme celui-ci:

https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall /

https://en-ca.wordpress.org/plugins/wordfence /

ces plugins numériseront votre installation Wordpress et vous avertiront de tout potentiel question. Ils seront également vous avertir de tout insécurité autorisations de dossier. En plus de cela, ces plugins vous recommanderont les permissions qui devraient être attribuées aux dossiers.

1
répondu user296526 2016-10-14 15:39:36

défini dans le fichier wp_config.

/var/www/html/Votre-Projet-Fichier/wp-config.151930920 php"

define( 'FS_METHOD', 'direct' );

chown - les changements de propriété des fichiers/répertoires. IE. le propriétaire du fichier/dir change pour le fichier spécifié, mais il ne modifie pas les permissions.

sudo chown -R www-data:www-data /var/www
1
répondu Harish Verma 2018-05-31 07:27:48
chown -Rv www-data:www-data
chmod -Rv 0755 wp-includes
chmod -Rv 0755 wp-admin/js
chmod -Rv 0755 wp-content/themes
chmod -Rv 0755 wp-content/plugins
chmod -Rv 0755 wp-admin
chmod -Rv 0755 wp-content
chmod -v 0644 wp-config.php
chmod -v 0644 wp-admin/index.php
chmod -v 0644 .htaccess
0
répondu Grapehand 2017-11-29 20:42:29

basé sur toute la lecture et l'agonie sur mes propres sites et après avoir été piraté, je suis venu avec la liste ci-dessus qui comprend les permissions pour un plugin de sécurité pour Wordpress appelé Wordfence. (Non affiliés)

dans notre exemple, le document wordpress root est /var/www/html/exemple.com/public_html

ouvrez les permissions pour que www-data puisse écrire à la racine du document comme suit:

cd /var/www/html/example.com
sudo chown -R www-data:www-data public_html/

maintenant à partir du tableau de bord de votre site, en tant qu'administrateur, vous pouvez effectuer des mises à jour.

site sécurisé après les mises à jour sont terminés en suivant ces étapes:

sudo chown -R wp-user:wp-user public_html/

la commande ci-dessus modifie les permissions de tout dans l'installation wordpress à l'utilisateur FTP wordpress.

cd public_html/wp-content
sudo chown -R www-data:wp-user wflogs
sudo chown -R www-data:wp-user uploads

la commande ci-dessus garantit que le plugin de sécurité Wordfence a accès à ses logs. Le répertoire uploads peut aussi être écrit par www-data.

cd plugins
sudo chown -R www-data:wp-user wordfence/

la commande ci-dessus permet également de s'assurer que le plugin de sécurité a besoin d'un accès en lecture et écriture pour fonctionner correctement.

permissions de répertoires et de fichiers # Réglez toutes les permissions de répertoires à 755 trouver. -type d-exec chmod 755 {} \;

# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;

définit les permissions pour wp-config.php à 640 pour que seul wp-user puisse lire ce fichier et personne d'autre. Les Permissions de 440 ne fonctionnaient pas pour moi avec ci-dessus propriété du fichier.

sudo chmod 640 wp-config.php

WordPress mises à jour automatiques utilisant SSH fonctionnaient avec fine avec PHP5 mais a rompu avec PHP7.0 en raison de problèmes avec php7.0-ssh2 bundeld avec Ubuntu 16.04 et je n'ai pas pu trouver comment installer la bonne version et la faire fonctionner. Heureusement, un plugin très fiable appelé SSH-sftp-updater-support (gratuit) permet des mises à jour automatiques avec SFTP sans besoin de libssh2. Donc les permissions ci-dessus n'ont jamais à être desserré, sauf dans de rares cas, au besoin.

0
répondu spinozarabel 2018-07-19 08:36:52