Apache: accès refusé car les autorisations de recherche sont manquantes

51

Je sais que cette question est souvent posée, mais les solutions que j'ai vues ne fonctionnaient pas pour moi.

Je n'ai qu'un seul hôte virtuel activé et j'essaie d'activer l'accès à un dossier qui n'est pas sous les racines du document

ServerAdmin [email protected]
DocumentRoot /var/www/html

Alias /movies /home/username/Videos/Movies

<Directory /home/username/Videos/Movies/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

J'ai défini /etc/apache2/envvars comme suit

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=public

Je me suis assuré que / home / nom d'utilisateur / Vidéos / et ses sous floders sont la propriété de username:public , définissez les autorisations à 777 (après 775 ne fonctionne pas) et fait en sorte que l'utilisateur www-data appartient au groupe public .

Maintenant, quand je saisis localhost/movies je reçois

[Mon Apr 21 11:28:14.971844 2014] [core:error] [pid 1385:tid 140067725104896] (13)Permission denied: [client 127.0.0.1:46603] AH00035: access to /movies/ denied (filesystem path '/home/username/Videos') because search permissions are missing on a component of the path

Mais quand je mets /etc/apache2/envvars pour exécuter Apache sous username (mon propre nom d'utilisateur) tout fonctionne bien. Le problème est lié la permission, mais je ne vois pas comment dans mon cas, surtout quand je définir les permissions à 777 . Des idées?

P.S. La version Ubuntu est 14.04, Apache 2.4.7 et je n’ai pas édité d’autres fichiers de configuration.

    
posée Yotam 21.04.2014 - 10:53
la source

5 réponses

64

Désolé, il semble que vous n'ayez pas encore trouvé de réponse. Je suis juste tombé sur cette page. J'ai rencontré la même erreur. J'ajoute cette réponse pour que cela aide quelqu'un d'autre.

Faites un chmod +x sur votre répertoire d’utilisateur et redémarrez apache. Les 755 autorisations devraient fonctionner. J'ai eu des problèmes avec 644 . J'espère que cela vous aide dans votre propre cas.

    
réponse donnée Peter 30.07.2014 - 14:01
la source
19

Si selinux est le problème, plutôt que de simplement le désactiver, cette page et cette page donne la commande pour accorder l'accès:

chcon -R -t httpd_sys_content_t ~/public_html/
    
réponse donnée jozxyqk 12.01.2016 - 11:53
la source
16

Vous avez peut-être activé selinux. Essayez

getenforce

S'il affiche "Enforcing", essayez

setenforce 0

et essayez si cela résout votre problème.

    
réponse donnée Soprano 28.02.2015 - 21:33
la source
8

J'ai rencontré le même problème, après des heures d'essais, j'ai trouvé une solution qui résout exactement le problème:

lien

Fondamentalement, le serveur Apache ne nécessite pas seulement des autorisations de lecture pour tous les fichiers qu'il sert, mais également l’autorisation d’exécution de tous les répertoires situés sur le chemin de votre hôte virtuel.

L'utilitaire namei peut être utilisé pour aider à trouver des problèmes d'autorisations en répertoriant les autorisations le long de chaque composant du chemin:

namei -m /usr/local/apache2/htdocs/foo/bar.html

Dans mon cas, un répertoire sur mon chemin a la permission 700, cela pose le problème. Après l'avoir changé à 701, le problème a été résolu.

    
réponse donnée Lu Sun 21.02.2016 - 07:39
la source
0

Je rencontrais ce problème lorsque j'essayais d'exécuter apache dans un conteneur Docker sur un hôte Ubuntu 16.04 utilisant le noyau 4.4 au lieu de 4.10.

Une fois que j'ai exécuté cette commande sur l’hôte et qu’elle a été redéployée, tout allait bien:

sudo apt-get install --install-recommends linux-generic-hwe-16.04 
    
réponse donnée Programster 28.08.2017 - 23:39
la source

Lire d'autres questions sur les étiquettes