Aujourd'hui, je vais essayer de configurer l'annuaire des utilisateurs sur le serveur Apache. J'ai rencontré un problème difficile. Le processus de configuration, les problèmes et leurs solutions sont résumés comme suit :
1. Configuration conventionnelle :
Ajouter un utilisateur Web :
ajouter un utilisateur Web
mot de passe web
Créez le répertoire public_html dans le répertoire des utilisateurs Web et définissez les autorisations sur 755 :
mkdir public_html
chmod 755 public_html -R
Modifiez /etc/http/httpd.conf :
#
# UserDir : Le nom du répertoire ajouté à la page d'accueil d'un utilisateur
# répertoire si une demande ~user est reçue.
#
# Le chemin d'accès au répertoire 'public_html' du compte d'utilisateur final doit être
# accessible à l'ID utilisateur du serveur Web Cela signifie généralement que ~userid.
# doit avoir les autorisations 711, ~userid/public_html doit avoir les autorisations
# de 755, et les documents qu'il contient doivent être lisibles par tous.
# Sinon, le client ne recevra qu'un message "403 Forbidden".
#
# Voir aussi : http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#
<IfModule mod_userdir.c>
#
# UserDir est désactivé par défaut puisqu'il peut confirmer la présence
# d'un nom d'utilisateur sur le système (en fonction du répertoire personnel
# autorisations).
#
#UserDir désactiver
#
# Pour permettre aux requêtes adressées à /~user/ de servir le public_html de l'utilisateur
# répertoire, supprimez la ligne "UserDir Disable" ci-dessus et décommentez
# la ligne suivante à la place :
#
Réputilisateur public_html
</SiModule>
2. Des tests et des problèmes surviennent :
http://127.0.0.1/~web
================================
Interdit
Vous n'êtes pas autorisé à accéder à /~web sur ce serveur.
De plus, une erreur 403 Forbidden s’est produite lors de la tentative d’utilisation d’un ErrorDocument pour gérer la demande.
-------------------------------------------------- ----------------------------------
Serveur Apache/2.0.54 (Fedora) sur le port 127.0.0.1 80
Généralement, lorsque ce problème survient, le problème qui vient à l'esprit est l'autorisation d'accès au répertoire. Après une longue période de vérification et d'ajustement, le problème n'a pas été résolu. Pendant cette période, je me suis demandé s'il s'agissait d'un problème avec Selinux. Je suis entré et j'ai regardé autour de moi, mais je n'ai rien trouvé à changer. (Des faits ultérieurs prouvent que parfois l’intuition est très précise. La différence entre savoir si vous pouvez trouver la réponse est souvent de savoir si vous approfondissez votre intuition).
3. Solution au problème. Après avoir longuement cherché Apache 403 sur Google, j'ai finalement vu dans un blog que l'auteur rencontrait exactement le même problème que moi : la configuration d'Apache et le répertoire étaient bons, mais la page pouvait ne soit pas affiché. La solution consiste à modifier le contrôle d'accès de Selinux en public_html.
Utilisez la commande suivante pour modifier les attributs de sécurité du dossier
chcon -R -t httpd_user_content_t public_html/
4. Résumé des connaissances connexes :
FAQ Fedora Core 5 SELinux
http://fedora.redhat.com/docs/selinux-faq-fc5/#faq-entry-public_html Q : Comment puis-je faire fonctionner un répertoire public_html d'utilisateur sous SELinux ?
R : Ce processus suppose que vous avez activé les répertoires HTML publics des utilisateurs dans votre fichier de configuration Apache, /etc/httpd/conf/httpd.conf. Ce processus couvre uniquement la diffusion de contenu Web statique. Pour plus d'informations sur Apache HTTP et SELinux, reportez-vous à. http://fedora.redhat.com/docs/selinux-apache-fc3/.
Si vous n'avez pas encore de répertoire ~/public_html, créez-le et remplissez-le avec les fichiers et dossiers à servir.
cd ~mkdir public_htmlcp /chemin/vers/content ~/public_html
À ce stade, httpd est configuré pour servir le contenu, mais vous recevez toujours une erreur 403 interdite. En effet, httpd n'est pas autorisé à lire le type de sécurité du répertoire et des fichiers lorsqu'ils sont créés dans le répertoire personnel de l'utilisateur. contexte de sécurité du dossier et de son contenu de manière récursive en utilisant l'option -R :
ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:user_home_t public_htmlchcon -R -t httpd_user_content_t public_html/ls -Z -d public_html/drwxrwxr-x auser auser user_u:object_r:httpd_user_content_t public_html/ls -Z public_html/- rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t bar.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t baz.html-rw-rw-r-- auser auser user_u:object_r:httpd_user_content_t foo.html
Vous remarquerez peut-être ultérieurement que le champ utilisateur, défini ici sur user_u, est remplacé par system_u. Cela n'affecte pas le fonctionnement de la stratégie ciblée. Le champ qui compte est le champ type.
Vos pages Web statiques devraient maintenant être servies correctement. Si vous continuez à avoir des erreurs, assurez-vous que le booléen qui active les répertoires personnels des utilisateurs est activé. Vous pouvez le définir en utilisant system-config-securitylevel. Sélectionnez l'onglet SELinux, puis sélectionnez Modifier SELinux. Zone de stratégie. Sélectionnez Autoriser HTTPD à lire les répertoires personnels. Les modifications prennent effet immédiatement.
Analyse des commandes utilisées :
ls -Z -d public_html/
#Afficher le contexte de sécurité du fichier/répertoire -Z, --context
Afficher le contexte de sécurité pour qu'il s'adapte à la plupart des affichages. Affiche uniquement le mode, l'utilisateur, le groupe, le contexte de sécurité et le nom du fichier.-d, --directory.
répertorier les entrées du répertoire au lieu du contenu et ne pas déréférencer les liens symboliques
chcon -R -t httpd_user_content_t public_html/
#Modifier le contexte de sécurité des fichiers/répertoires -R, --recursive
modifier les fichiers et les répertoires de manière récursive-t, --type
définir le type TYPE dans le contexte de sécurité cible