web-dev-qa-db-fra.com

Autoriser le sous-répertoire avec Apache

Je pense que c'est un correctif assez simple et j'ai vu des problèmes similaires lors de la recherche, mais je n'ai pas pu le résoudre avec ces solutions. Fondamentalement, le problème est que je ne peux accéder à aucun sous-répertoire de mon serveur Web. Aller à localhost affiche l'amende de l'index. Mais aller à localhost/test donne une erreur interdite 403.

J'utilise CentOS. J'ai essayé d'éditer le fichier /etc/httpd/conf/httpd.conf de plusieurs manières mais je n'ai pas eu de chance. Le DocumentRoot se trouve dans/var/www/html. Actuellement, j'ai:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

J'ai essayé d'ajouter ce qui suit:

<Directory "/var/www/html/test">
    Order allow,deny
    Allow from all
</Directory>

Mais cela me donne toujours l'erreur interdite 403.

7
Danny

Vous ne devriez pas avoir besoin d'autoriser spécifiquement l'accès à un répertoire en dessous de celui qui est déjà configuré dans httpd.conf

Étant donné que/var/www/html est configuré avec "AllowOverride None", le problème n'est pas dû à un fichier .htaccess modifiant les droits d'accès.

La seule raison qui reste est que les autorisations sur les fichiers et répertoires ne permettent pas à l'uid du serveur Web de lire à partir de ce répertoire. Ce qu'ils sont et ce qu'ils devraient être dépend de votre modèle de sécurité. Mais comme solution rapide, vous pouvez essayer:

# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*

Si cela résout le problème, veuillez prendre le temps de fixer la propriété et les autorisations des fichiers à quelque chose de plus approprié.

8
symcbean

Habituellement, je recommande de jeter d'abord un œil à http error_log pour voir le problème exact.

Avec la configuration par défaut, vous devriez pouvoir accéder au répertoire workshop-5.4:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Si vous ne pouvez toujours pas accéder au répertoire, tout indique des autorisations de répertoire, dans ce cas, je suggère d'essayer:

chown -R Apache.apache /var/www/html  # Assuming Apache as default User
chmod -R 755 /var/www/html            # Making sure all users can read and execute

Sur un terminal distinct, exécutez les commandes suivantes:

apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log     # Assuming default error_log location

Essayez d'ajouter un simple fichier html comme (example.html):

<html>
<head><body>It works!</body></head>
</html>

Enfin, rechargez la page, essayez de charger example.html et jetez un œil à la sortie de la commande tail.

3
mdiianni

Un autre cas, dans les commentaires, il est mentionné que le répertoire a été copié avec des fichiers qu'il contient.

Il pourrait y avoir un fichier .htaccess avec la configuration provoquant le 403.

Fichiers dont le nom commence par un point "." sont cachés dans Unix, pour leur montrer utiliser ls -a.

Documentation ici: https://httpd.Apache.org/docs/current/howto/htaccess.html

0
Samuel Åslund

Commentez ces <Directory> directives et définissez simplement DocumentRoot /var/www/html et chown -R Apache:apache /var/www/html et redémarrez httpd.

Le <Directory> la directive doit être utilisée pour appliquer un groupe de directives à un répertoire spécifique du système de fichiers (c'est-à-dire changer les autorisations), donc vous voulez généralement l'utiliser dans un <VirtualHost>.

0
fsoppelsa

SE Linux a été activé dans mon cas.

setenforce 0

pour le désactiver (à des fins de test uniquement)

0
Douglas Cooper