Je sais que cette question est beaucoup posée, mais les solutions que j'ai vues ne m'ont pas fonctionné.
Un seul hôte virtuel est activé et j'essaie d'activer l'accès à un dossier qui ne se trouve pas sous la racine du document.
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Alias /movies /home/username/Videos/Movies
<Directory /home/username/Videos/Movies/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Je mets /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 / Videos / et ses sous-dossiers appartiennent à username:public
, définissez les autorisations sur 777 (après que 775 ne fonctionne pas) et assurez-vous que l'utilisateur www-data
appartient au groupe public
.
Maintenant, quand je navigue sur http://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 lorsque je /etc/apache2/envvars
lance Apache sous username
(mon propre nom d'utilisateur), tout fonctionne correctement. Le problème est lié à la permission, mais je ne vois pas comment dans mon cas; surtout quand je mets les permissions à 777
. Des idées?
La version PS Ubuntu est 14.04, Apache est 2.4.7 et je n’ai pas édité d’autres fichiers de configuration.
la source
/home
avec ACL activé? (il y a un signe "+" à la fin des bits d'autorisation si c'est le cas (vérifier avecls -l
))Réponses:
Faites un
chmod +x
sur votre répertoire utilisateur, et redémarrez apache. 755 autorisations devraient fonctionner. J'ai eu des problèmes avec 644 .la source
namei -m /home/youruser/public_html/yourfile.ext
ou essayer people.apache.org/~igalic/hacks/parsepath/home/username
pouvoir y accéder rapidement.Si selinux est le problème plutôt que de simplement le désactiver, cette page et cette page donnent la commande permettant d'accorder l'accès:
la source
~/public_html/
partie par le répertoire racine du contenu que j'essayais de servir.chcon -R -t httpd_sys_content_t /var/www/html/phpmyadmin/
(dans ma situation)Vous avez peut-être activé selinux. Essayer
Si cela montre "Enforcing", essayez
et essayez si cela résout votre problème.
la source
J'ai rencontré le même problème, après des heures d'essais, j'ai trouvé une solution qui résout le problème:
https://wiki.apache.org/httpd/13PermissionDenied
Fondamentalement, le serveur Apache ne requiert pas uniquement les autorisations de lecture de tous les fichiers qu’il sert, mais également les autorisations 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 résoudre les problèmes d'autorisations en répertoriant les autorisations associées à chaque composant du chemin:
Dans mon cas, un répertoire dans mon chemin a l'autorisation 700, cela cause le problème. Après avoir changé en 701, le problème a été résolu.
la source
J'éprouvais ce problème lorsque j'essayais d'exécuter Apache dans un conteneur Docker sur un hôte Ubuntu 16.04 qui utilisait le noyau 4.4 au lieu de 4.10.
Une fois que j'ai exécuté cette commande sur l'hôte et que j'ai été redéployé, tout allait bien:
la source
chmod
ouchown
à l'intérieur du conteneur, et il supprime les erreurs Apache 403 pendant un certain temps, pour revenir plus tard. Autant que je sache, il n'y a pas de redémarrage de conteneur ou autre changement important qui pourrait en être la cause. Depuis que j’exécute effectivement la version 16.04, j’ai essayé d’installer ce fichier binaire, et mes 403 restent à l’écart pour le moment. Je vais garder un oeil sur elle, et merci!