38 votes

Apache 13 autorisation refusée dans le répertoire home de l'utilisateur

L'ami de mon site fonctionnait bien, jusqu'à ce qu'il s'est déplacé à la racine du document d' /var/www/xxx de /home/user/xxx.

Apache donne 13 de refus d'autorisation de messages d'erreur quand on essaie d'accéder au site via un navigateur web.

Le site est configuré comme un répertoire virtuel. Toutes les configurations d'Apache ont pas changé (sauf pour le changement de répertoire).

Nous avons essayé d' chmod 777 /home/user/xxx, chown apache /home/utilisateur/xxx. Mais ils n'ont pas de travail.

Est-il une sorte d'ensemble de fonctions de sécurité sur le home de l'utilisateur annuaires? Le serveur OS est CentOS (Godaddy VPS).

Toute aide est appréciée!

Merci!

87voto

Dave Points 2832

S'avère... nous avons dû également chmod 755 le répertoire parent, l'utilisateur, en plus de xxx.

37voto

kek Points 301

im en utilisant CentOS 5.5 et pour moi, c'était SElinux jouer avec elle, j'ai oublié de vérifier ça. vous pouvez désactiver temporairement par faire en tant que root

echo 0 > /selinux/enforce

espérons qu'il aidera quelqu'un

11voto

selvakumar Points 116

selinux est la cause du problème.....

TException: Erreur: TSocket: impossible de se connecter à localhost:9160 (Autorisation refusée [13]) Pour résoudre cela, vous avez besoin de changer une SELinux valeur booléenne (qui sera automatiquement persistent malgré les redémarrages). Vous pouvez également redémarrer httpd pour réinitialiser le proxy travailleur, bien que ce ne soit pas strictement nécessaire.

setsebool -P httpd_can_network_connect 1

ou

(13) Le Refus D'Une Autorisation

Erreur 13 indique un problème d'autorisations de système de fichiers. C'est, Apache a été refusé l'accès à un fichier ou un répertoire en raison des autorisations incorrectes. Il n'est pas, en général, implique un problème dans les fichiers de configuration d'Apache.

Afin de servir des fichiers, Apache doit avoir l'autorisation accordée par le système d'exploitation pour accéder à ces fichiers. En particulier, l'Utilisateur ou le Groupe spécifié dans httpd.conf doit être en mesure de lire tous les fichiers qui seront servis et recherche le répertoire contenant ces fichiers, ainsi que tous les répertoires parents jusqu'à la racine du système de fichiers.

Typique des autorisations sur un système de type unix, pour les ressources qui ne sont pas possédés par l'Utilisateur ou le Groupe spécifié dans httpd.conf serait 644 -rw-r--r-- pour le commun des fichiers et 755 drwxr-x-r-x pour les répertoires et les scripts CGI. Vous pouvez aussi avoir besoin de vérifier les autorisations étendues (comme SELinux autorisations) sur les systèmes d'exploitation qui prennent en charge eux.

Un Exemple

Disons que vous avez reçu la Permission Denied erreur lors de l'accès au fichier /usr/local/apache2/htdocs/foo/bar.html sur un système unix.

Vérifiez d'abord les autorisations existantes sur le fichier:

cd /usr/local/apache2/htdocs/foo ls-l bar.htm

Correction si nécessaire:

chmod 644 bar.html

Puis faire de même pour le répertoire et chaque parent directory (/usr/local/apache2/htdocs/foo /usr/local/apache2/htdocs /usr/local/apache2 /usr/local, /usr):

ls-la chmod +x . cd ..

répétez jusqu'à la racine

Sur certains systèmes, l'utilitaire namei peut être utilisé pour aider à trouver des problèmes d'autorisations en énumérant les autorisations le long de chaque composant du chemin d'accès:

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

Si toutes les autorisations sont correctes et vous obtenez toujours une erreur Permission Denied, vous devriez vérifier pour les autorisations. Par exemple, vous pouvez utiliser la commande setenforce 0 pour désactiver SELinux et vérifier pour voir si le problème disparaît. Si oui, ls -alZ peut être utilisé pour afficher SELinux autorisation et chcon de les corriger.

Dans de rares cas, cela peut être causée par d'autres problèmes, comme un problème d'autorisations de fichier ailleurs dans apache2.fichier conf. Par exemple, un WSGIScriptAlias directive de la cartographie à un fichier existant. Le message d'erreur peut ne pas être précis à propos de fichier qui était illisible.

NE définissez PAS de fichiers ou de répertoires en mode 777, même "juste pour tester", même si "c'est juste un serveur de test". Le but d'un serveur de test est de faire les choses dans un environnement sûr, de ne pas s'en tirer avec faire le mal. Tous il va vous dire si le problème est avec les fichiers qui existent réellement.

7voto

Greg Points 1057

Vous ne savez pas si vous l'avez résolu, mais dans votre httpd.conf

Vérifiez votre nom d'Utilisateur/de Groupe. Habituellement, il sera mis à

L'utilisateur www Groupe www

Si donc le modifier à votre nom/groupe

L'Utilisateur Greg le personnel du groupe

3voto

Josh Points 7132

Apache du journal des erreurs va expliquer pourquoi vous obtenez une autorisation refusée. Aussi, serverfault.com est un meilleur forum pour une question comme ça.

Si le journal des erreurs simplement dit "permission denied", la ligue de l'utilisateur que le serveur est en cours d'exécution au fur et à essayer de lire le fichier en question. Ainsi, par exemple:

sudo -s
su - nobody
cd /
cd /home
cd user
cd xxx
cat index.html

Voir si l'un de ceux qui vous donne l'erreur "autorisation refusée".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X