8 votes

Fedora 16 : "Autorisation refusée : les autorisations de fichier refusent l'accès au serveur"

Je travaille avec une installation fraîche de Fedora 16 et j'essaie de faire fonctionner Apache. Je suis très familier avec Linux et un peu avec CentOS, mais j'ai très peu d'expérience avec Fedora et SELinux (quoi que ce soit).

Au début, après avoir installé Apache, je ne pouvais même pas voir la page web d'exemple. J'ai fait quelques recherches et j'ai finalement résolu ce problème en modifiant les iptables.

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables-save

J'ai ensuite commencé à déposer des fichiers dans le répertoire web, en m'assurant que les autorisations étaient correctement configurées.

$ ls -Rlhp /var/www/html/
/var/www/html/:
total 8.0K
drwxr-xr-x. 2 apache root 4.0K Apr 20 22:47 files/

/var/www/html/files:
total 25M
-rw-r--r--. 1 apache users 25M Apr 20 22:47 SRR022918.errors.tar.gz

Mais lorsque j'ai navigué vers l'URL correspondante (my.server.edu/files/SRR022918.errors.tar.gz), j'ai reçu une erreur 403 Permission refusée. J'ai vérifié le journal des erreurs Apache et j'ai trouvé ce message.

[Fri Apr 20 23:09:55 2012] [error] [client xxx.xxx.xx.xx] (13)Permission denied: file permissions deny server access: /var/www/html/files/SRR022918.errors.tar.gz

J'ai essayé de définir les autorisations des fichiers et des répertoires à 777, mais cela n'a pas résolu le problème. C'est vraiment louche, donc je suppose que cela a quelque chose à voir avec SELinux. Je n'ai aucune expérience avec SELinux, alors suis-je sur la bonne voie? Si oui, comment puis-je résoudre cela?

0 votes

Une chose à noter est que sudo iptables-save ne fait que renvoyer la configuration actuelle d'iptables. Vous devrez l'enregistrer dans /etc/sysconfig/iptables pour qu'elle survive à un redémarrage du serveur.

0 votes

Et comment cela se fait-il? Désolé pour mon manque d'expérience avec Fedora...

0 votes

Je n'ai pas encore testé cela, alors faites d'abord un `sudo cat /etc/sysconfig/iptables` pour savoir à quoi cela ressemble avant de le modifier (ou utilisez `cp` pour le sauvegarder). Mais `sudo iptables-save | sudo tee /etc/sysconfig/iptables` devrait fonctionner. Vérifiez ensuite le contenu pour voir s'il contient la/les règle(s) que vous attendez. Si c'est le cas, vous pourriez le tester en redémarrant le service avec `sudo service iptables restart`.

15voto

Magellan Points 4431

Si ma mémoire est bonne, vous avez probablement besoin d'exécuter chcon -R -h -t httpd_sys_content_t /var/www/html

Cela définit de manière récursive le répertoire de votre contenu au bon contexte pour Apache.

0 votes

J'ai essayé à peu près tout pour obtenir les autorisations de fichier à fonctionner. Merci pour cela

8voto

applecache Points 177

Ce problème d'autorisation de fichier est, comme vous vous y attendiez, dû à SELinux. C'est plutôt compliqué, mais les gens compétents de CentOS ont mis en place un assez bon wiki pour vous aider. En bref, vous pouvez soit désactiver SELinux (une idée totalement mauvaise), le mettre en mode permissif (une idée légèrement moins mauvaise), ou travailler avec SELinux. Comme le wiki détaille les informations de manière assez succincte, je vais rester succinct et vous laisser lire le wiki.

J'ai réglé le mien en copiant les fichiers dans /var/www/html puis en restaurant le contexte par défaut pour ce dossier en utilisant :

restorecon -Rv /var/www/html

0 votes

Je voudrais noter que cette réponse a parfaitement fonctionné pour moi sur CentOS7.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X