Autorisations correctes pour / var / www et wordpress

41

J'ai configuré un serveur LAMP et j'ai accès via SSH et à la page "ça marche" à partir d'un navigateur Web à partir de l'intérieur de mon réseau (via l'adresse IP) et de l'extérieur à l'aide de dyndns.

Nous avons des projets Wordpress dans des sous-répertoires dans / var / www / wordpress1 / var / www / wordpress2, etc. Je ne peux pas accéder à ces sous-répertoires à partir d'un navigateur afin de configurer WP - ou (je suppose) de voir contenu sur un navigateur. Je reçois une erreur 403 Forbidden sur mon navigateur.

Je suppose que c'est un problème d'autorisations. Pouvez-vous s'il vous plaît me dire les paramètres appropriés pour les autorisations à:

  1. Autoriser les développeurs et moi à lire / écrire.
  2. permettre à WP de s'installer et de faire son travail
  3. Autoriser les visiteurs à accéder au (x) site (s) via le Web.

Je devrais également mentionner que le sous-dossier est en fait un lien vers un dossier situé sur un autre disque dur interne. Je ne pense pas que cela fera une différence, mais j’ai pensé que je devrais divulguer.

total 12
drwxr-xr-x  2 root root 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root root 4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 root root   43 2012-07-11 20:45 admin_media ->     /root/django_src/django/contrib/admin/media
-rw-r--r--  1 root root  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 root root   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 root root   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Voici le résultat de l'utilisation chown -R www-data:www-data /var/www

total 12
drwxr-xr-x  2 www-data www-data 4096 2012-07-12 10:55 .
drwxr-xr-x 13 root     root     4096 2012-07-11 20:02 ..
lrwxrwxrwx  1 www-data www-data   43 2012-07-11 20:45 admin_media -> /root/django_src/django/contrib/admin/media
-rw-r--r--  1 www-data www-data  177 2012-07-11 17:50 index.html
lrwxrwxrwx  1 www-data www-data   14 2012-07-11 20:42 media -> /hdd/web/media
lrwxrwxrwx  1 www-data www-data   18 2012-07-12 10:55 wordpress -> /hdd/web/wordpress

Je n'arrive toujours pas à accéder via un navigateur.

dpbklyn
la source
Merci de poster le résultat de la commande ls -la /var/www.
SirCharlo
s'il vous plaît mettez cette information dans votre question!
Jorge Castro
OK, il m'a fallu une seconde pour me rappeler comment poster le code ...
dpbklyn
Bien, essayezchown -R www-data:www-data /var/www
SirCharlo
2
Je pense que votre problème maintenant est que vous utilisez des liens. Apache ne suivra pas les liens. Ce que vous feriez, c’est de déplacer ces fichiers vers / var / www et de configurer Apache pour utiliser vitrualhosts. Voir help.ubuntu.com/10.04/serverguide/httpd.html Autres, si vous souhaitez utiliser /hdd/web/wordpresspour configurer correctement Apache (répertoire racine). Vous pouvez configurer Apache pour utiliser des liens, mais je ne le conseille pas. Voir aussi help.ubuntu.com/community/WordPress
Panther

Réponses:

82

Tout d'abord, vous devez vous assurer que votre nom d'utilisateur est inclus dans le www-datagroupe. Sinon, vous pouvez ajouter votre nom d'utilisateur en tant que www-datagroupe

sudo adduser $USER www-data

Après cela, vous devriez changer la propriété de / var / www en votre nom d'utilisateur

sudo chown $USER:www-data -R /var/www

Prochaine étape, pour la pratique générale , vous devez modifier l’autorisation en 755 (rwxr-xr-x) et ne pas recommander de modifier l’autorisation en 777 pour des raisons de sécurité.

sudo chmod u=rwX,g=srX,o=rX -R /var/www

Relié à une autorisation spécifique pour wordpress ou laravel ou un autre framework, vous pouvez alors lire la documentation.

J'espère que ça aide...

métamorphe
la source
1
n'a pas fonctionné pour moi, j'ajoute à l'usagesudo chown www-data:www-data -R mywordpressdirectory/
Louis
Après avoir modifié la propriété, vous devez également modifier l'autorisation. Avez-vous changé votre autorisation à 755?
Métamorphe
1
Il a fait avec chmod. Il modifie sa permission en 755 avec des notes persistantes (pour conserver les nouveaux fichiers appartenant à www-data.)
Zachary Dahan
La meilleure explication que je puisse trouver, courte et douce. Merci.
Banago
1
Ainsi, vous ne pourrez pas installer / supprimer les plugins / thèmes, etc. du panneau d'administration, car WordPress ne disposera pas de l'autorisation d'écriture.
Igor Skoldin
3

Apparemment, voici comment cela est recommandé dans le Guide du serveur Ubuntu:

Chapitre 11. Serveurs Web.

1.4. Autorisation de partage d'écriture

Pour que plusieurs utilisateurs puissent écrire dans le même répertoire, il sera nécessaire d'accorder une permission d'écriture à un groupe qu'ils partagent en commun. L'exemple suivant accorde une autorisation d'écriture partagée à / var / www / html au groupe "webmasters".

J'utilise www-data . Remplacez simplement "webmasters" par votre groupe, assurez-vous d'ajouter l'utilisateur au groupe bien sûr.

sudo chgrp -R webmasters /var/www/html
sudo find /var/www/html -type d -exec chmod g=rwxs "{}" \;
sudo find /var/www/html -type f -exec chmod g=rws "{}" \;

Je viens de le tester avec Dreamweaver à partir de mon bureau Mac. Les fichiers ajoutés, etc. ajoutés et remplacés, conservent les autorisations appropriées à une exception près. répertoire html conservent leur propriété en tant que root mais sont modifiables par l’utilisateur local.

$ls -l
$-rw-rw-r-- 1 localUser www-data 11505 May 28 09:56 index2.html
$-rw-rwSr-- 1 root  www-data 11535 May 28 09:58 index.html

J'espère que cela clarifie les choses et aide les lassés, parce que je sais que j'ai toujours été las de cette situation, mais maintenant, c'est clair pour moi.

Oh, et je recommande fortement d'utiliser sftp avec des clés pour accéder à votre ftp, cela fonctionne très bien pour moi et je n'ai pas besoin de PureFTP ni de toute autre méthode non sécurisée de transmission des fichiers sur le site Web. Il y a quelques bons tutoriels sur le site Digital Ocean concernant la sécurisation de votre serveur avec des clés ssh:

Comment configurer l'authentification par clé SSH sur un serveur Linux

MagicCamera
la source
1) qui laisse des bits setgid sur les fichiers. Cela semble étrange, ne fait rien, ouvre la porte aux problèmes de sécurité si les utilisateurs peuvent rendre des fichiers exécutables et les exécuter. Mais si vous êtes satisfait de setgid sur les fichiers, remplacez finds complexe par just sudo chmod -R g=srwX /var/www/html.
Témo le
2) find -exec chmodengendrera un programme distinct pour chaque fichier, ce qui prend du temps et met une pression inutile sur le système si vous avez plusieurs fichiers. Solution: sudo find /var/www/html -type f -print0 |sudo xargs -0 chmod g=rw. xargs essaiera d'alimenter autant de chemins de fichiers que possible vers une seule instance de chmod.
Témoignage
0

Vérifiez que Apache dispose des droits d’exécution pour /hdd/web/mediaet /hdd/web/wordpress.

Courir:

chmod o+x /root /root/site /root/site/about

De plus, Apache doit être configuré pour autoriser l'accès au répertoire sur le système de fichiers. Cela doit être fait par un administrateur système en insérant une directive dans les fichiers de configuration d'Apache (httpd.conf).

Le répertoire réel se trouvant dans la racine Web, il doit être accessible, mais FollowSymLinks n'a peut-être pas été activé pour le répertoire. Il doit également être ajouté à la directive.

Voir http://httpd.apache.org/docs/2.0/mod/core.html#directory

jasmins
la source
Merci à tous ... J'ai décidé de suivre le chemin de la moindre résistance ... Supprimez les liens symboliques. Tout fonctionne parfaitement.
dpbklyn
0

Lire autour du guide d’installation d’Ubuntu ..

chown -R www-data /usr/share/wordpress

Il serait peut-être plus facile de l’installer de cette façon au lieu d’essayer de décompresser les fichiers sur /var/www

https://help.ubuntu.com/community/WordPress ...

De toute façon, WordPress fonctionne sur Apache ... non? si vous voulez le faire de cette façon .. vous montrez le faire en tant que @metamorph an puis donnez la permission sur apache2 httpd.confcomme ceci:

<VirtualHost *:80>
        ServerName site
        ServerName site.domain
        DocumentRoot /srv/www/wordpress.site

        DirectoryIndex index.php

</VirtualHost>

et ensuite default-server.conf.

<Directory "/srv/www/wordpress.site">
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
</Directory>

Il est peut-être préférable de faire l’étape par étape https://help.ubuntu.com/community/WordPress

maniat1k
la source