Forum Linux.debian/ubuntu Permissions de fichiers servis par Apache

Posté par  . Licence CC By‑SA.
Étiquettes :
0
21
fév.
2014

Salut les moules,

Désolé si ma question fait un peu débutant mais en me basant sur mes maigres connaissances je sèche un peu et ça sera l'occasion de poser quelques questions sur les bonnes pratiques pour servir des pages web avec Apache sous Debian. :-)

Mon problème est le suivant : j'ai installé PgSQL et j'essaie de pouvoir l'administrer via phpPgAdmin. J'ai installé ce dernier via le paquet disponible dans les dépôts Debian (7 je crois, j'ai un Kimsufi chez OVH) et en listant les fichiers installés via ce paquet je vois que les fichiers PHP et consorts se trouve dans /usr/share/phppgadmin/.

Ni une, ni deux je crée donc un lien symbolique de la racine de mon serveur web (/var/www/) vers ce répertoire. Et comme j'ai également installé Apache via les dépôts Debian, il est lancé par l'utilisateur www-data et je fais donc un chown -R sur mon lien symbolique pour qu'il appartienne à www-data.

Reprenons :

ls -alh /var/www/
lrwxrwxrwx 1 www-data root   22 Feb 18 23:59 phppgadmin -> /usr/share/phppgadmin/

et

ls -alh /usr/share/
drwxr-xr-x  12 www-data root 4.0K Feb 18 23:45 phppgadmin

J'avais aussi pris soin de modifier mon fichier de configuration d'Apache puis fait un reload :

cat /etc/apache2/sites-enabled/000-default 
<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options -Indexes
        AllowOverride None
        Order Deny,Allow
        Deny from all
    </Directory>
        <Directory /var/www/phppgadmin/>
                Options FollowSymLinks MultiViews
                AllowOverride None
                Order Deny,Allow
                Allow from all
        </Directory>

Mais quand j'essaie d'accéder à phpPgAdmin depuis mon navigateur :

Forbidden

You don't have permission to access /phppgadmin/index.php on this server.

Pareil dans les logs qui semblent indiquer que mon fichier de configuration Apache n'est pas d'équerre :

[Fri Feb 21 19:37:26 2014] [error] [client 109.190.XX.YY] client denied by server configuration: /usr/share/phppgadmin/index.php

Est-ce à dire qu'il faut que je déclare aussi /usr/share/phppgadmin dans mon fichier de configuration Apache ???

Et avant de mettre en place une usine à gaz, est-ce que je n'empile pas déjà des erreurs ?
Genre où vaut-il mieux mettre la racine de son serveur web, sous quel utilisateur doit tourner Apache (j'imagine que la configuration par défaut de Debian respecte les bonnes pratiques), quid des permissions de fichiers, etc. ?
Si vous avez un pointeur vers un article qui explique tout ça (mais pas en mode débutant complet comme la plupart des ressources sur lesquelles je suis tombé) je suis preneur :-)

Merci d'avance !

  • # j'ai un doute sur la cascade de dossier

    Posté par  . Évalué à 3.

    en effet, avec "order deny,allow"
    tu lui demandes de prendre d'abord la liste "deny" avant la liste "allow".

    d'apres tes fichiers de conf, tu commences pas dire que le dossier racine est deny from all

    <Directory />
    Options -Indexes
    AllowOverride None
    Order Deny,Allow
    Deny from all
    </Directory>

    puis le sous dossier devrait etre Allow from all
    mais comme la regle match d'abord le deny from all

    <Directory /var/www/phppgadmin/>
    Options FollowSymLinks MultiViews
    AllowOverride None
    ** Order Deny,Allow**
    Allow from all
    </Directory>

    • [^] # Re: j'ai un doute sur la cascade de dossier

      Posté par  . Évalué à 1.

      Je ne suis pas sûr de comprendre…

      La directive Order qui change la manière dont sont vérifiées les requêtes par rapport aux directives Deny et Allow c'est uniquement au sein d'un <Directory> non ?
      Et vu que c'est en cascade, ça doit être le dernier qui prime (ici le deuxième) ?

      D'ailleurs j'ai exactement les mêmes directives pour /var/www/phpmyadmin/ et ça fonctionne.

  • # config

    Posté par  (site web personnel) . Évalué à 3.

    Je pense pour la config /usr/share n'est pas bonne.

    Essaie de copier la config du directory /var/www pour tester.

    Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

    • [^] # Re: config

      Posté par  . Évalué à 1.

      Je n'ai aucune configuration pour /usr/share, tu veux dire qu'il faut que j'en crée une ?

  • # Il n'est pas préconfiguré ?

    Posté par  . Évalué à 6. Dernière modification le 21 février 2014 à 22:40.

    Il y a déjà un virtualhost de créé par le paquet, en tout cas ça y ressemble

    /etc/apache2/conf.d/phppgadmin
    

    Normalement sans rien faire et sous réserve de vérifier dans le fichier sus-mentionné, un truc du genre http://mon_serveur/phppgadmin devrait te permettre d'y accéder

    Ensuite c'est mieux pour ton site web de créer un virtualhost spécifique dans /etc/apache2/sites-available/mon_site

    Sur debian, il faut mettre ses propres virtualhost dans /etc/apache2/sites-available/ et les activer grâce à la commande a2ensite qui crée tout bêtement un lien symbolique du fichier de ton virtualhost de /etc/apache2/sites-available/ vers /etc/apache2/sites-enabled/

    • [^] # Re: Il n'est pas préconfiguré ?

      Posté par  . Évalué à 1.

      Je n'avais pas mis en place de virtualhost car je n'en voyais pas l'intérêt dans mon cas et que c'était un chouïa plus compliqué mais je vais y jeter un œil, merci !

    • [^] # Re: Il n'est pas préconfiguré ?

      Posté par  . Évalué à 1.

      Je viens de me rappeler un détail qui a peut-être son importance : j'ai mes DNS chez Gandi et je compte profiter du certificat SSL gratuit qu'ils offrent mais ce ne sera pas un certificat wildcard.

      Dans ces conditions, je ne vois pas d'intérêt à utiliser des virtualhosts qui auraient tous le même DocumentRoot ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.