Bonjour,

J'ai un problème d'accès à un site web. J'ai vu beaucoup de cas similaires sur la toile mais rien pour m'aider. :-?
Je souhaite externaliser les dossiers racines de mes virtualhosts.
Pour cela, j'ai créé le fichier /etc/httpd/conf.d/1-vhosts.conf :
<VirtualHost *:80>
    DocumentRoot /home/MOI/www/site1
    ServerName site1
    ErrorLog /var/log/httpd/site1-error.log
    CustomLog /var/log/httpd/site1-access.log common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /home/MOI/www/site2
    ServerName site2
    ErrorLog /var/log/httpd/site2-error.log
    CustomLog /var/log/httpd/site2-access.log common
</VirtualHost>
Bien évidemment, j'ai renseigné le fichier hosts du genre :
127.0.0.1    site1    site2
et les fichiers /home/MOI/www/site1/index.html et /home/MOI/www/site2/index.html existent bien.

D'après tous mes tests, il semblerait qu'Apache n'a pas le droit d’accéder au dossier /home/MOI/www/site1 et /home/MOI/www/site2
J'ai donc eu l'idée de créer un groupe www regroupant les utilisateurs MOI, apache et root
-> vous me direz si c'est une bonne ou mauvaise méthode.
Ensuite, j'ai modifié les droits du dossier contenant les sites web :
chgrp www /home/MOI/www
chmod -R a+rwx /home/MOI/www
Malheureusement, j'ai toujours cette foutue erreur 403 sur localhost, site1 et site2 :
Forbidden

You don't have permission to access / on this server.
Apache/2.2.17 (Fedora) Server at site1 Port 80
Par contre, j'ai regardé autre chose...
Si je remplace le contenu (principalement le DocumentRoot) de mon fichier 1-vhosts.conf par :
<VirtualHost *:80>
    DocumentRoot /home
    ServerName site1
    ErrorLog /var/log/httpd/site1-error.log
    CustomLog /var/log/httpd/site1-access.log common
</VirtualHost>
et que je met un fichier à cet emplacement /home/index.html, ce fichier s'affiche correctement dans le navigateur que ce soit avec http://site1 ou http://localhost
Par contre, aucun accès apparait dans les logs !

Voila je n'y comprends rien.
J'espère que les informations (que j'ai essayé de détailler au maximum) de ce post vont servir à quelques choses...
J'attends votre aide !
Merci d'avance
avant tout pour voir la direction à prendre, désactive SElinux pour tester :

sous root :

setenforce 0
oupsss... j'ai oublié ce détail : SElinux est déjà désactivé
Bonsoir,
que contient /etc/httpd/conf.d ?

En étant root, que renvoie la commande :
su apache -s '/bin/sh' -c 'ls -l /home/MOI/www/'
chmod -R a+rwx /home/MOI/www
là t'es gonflé ! un g+rwx serait amplement suffisant !
ou tu utilises /var/www/ ce qui est quand même le plus simple...
@proxy : le dossier ne contient que mon fichier vhosts en plus des 4 fichiers d'origines
[root@Fedo MOI]# su apache -s '/bin/sh' -c 'ls -l /home/MOI/www/'
ls: impossible d'accéder à /home/MOI/www/: Permission non accordée
[root@Fedo MOI]#
cela signifie qu'apache n'a pas le droit d'accéder au dossier /home/MOI/www/ ?
Pourtant j'ai donné les droits au groupe ???

Si c'est pas trop te demander, que signifie ta commande ?

@nouvo09:
chmod -R a+rwx /home/MOI/www
c'était pour être sûr... 🙂

@Heldwin :
[root@Fedo MOI]# stat /home
  File: « /home »
  Size: 4096          Blocks: 8          IO Block: 4096   répertoire
Device: fd02h/64770d    Inode: 2           Links: 4
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
[root@Fedo MOI]# stat /home/MOI
  File: « /home/MOI »
  Size: 4096          Blocks: 8          IO Block: 4096   répertoire
Device: fd02h/64770d    Inode: 22544385    Links: 50
Access: (0700/drwx------)  Uid: (  500/  MOI)   Gid: (  500/  MOI)
Tu dis que c'est une mauvaise idée... ok mais le service httpd n'accède pas en tant que "apache" (et pas root) ?

@pingou : oui sauf que mon utilisateur MOI ne peut rien y faire... c'est moyen pour développer. :/

+++
Pourquoi ton utilisateur peut rien y faire? C'est un problème basique de permissions, tu met ton utilisateur dans le groupe apache, tu donne les droits d'écriture à ce groupe sur /var/www et c'est reglé.
Madko a raison. Apache n'a aucune raison de venir lire dans les répertoires /home alors qu'il existe des endroits prévus pour ça.
@madko :
Je suis pas sûr de comprendre... désolé mais le service httpd utilise l'utilisateur apache ou root ?
Le groupe apache ne semble pas exister... dois-je le créer et intégrer les utilisateurs MOI et apache ?

@nouvo09 :
C'est juste pour "centraliser" mes données... je trouve ça plus simple (notamment pour les backups)

Donc il faut mieux autoriser mon utilisateur à accéder au dossier /var/www que apache à /home/MOI/www ?
Tape la commande id apache : tu verras que le groupe apache existe
Les deux serveurs virtuels sont sur le même port

Essaye les ports 80 pour le 1er et 81 pour le 2nd.
Le groupe apache existe sauf si tu l'a volontairement supprimé.

@FToulouse, le but en partie des vhost est justement de pouvoir utiliser le même port.
ça fonctionne... :-D
1/ j'ai spécifié le groupe www (MOI et root) et les droits adéquates (je présume) sur le dossier :
chgrp -R www /var/www/html
chmod -R g+rw /var/www/html
2/ j'ai déplacé les sites dans /var/www/html
3/ j'ai adapté le fichier vhosts

Effectivement, le groupe apache existe bien...
j'avais pas vu l'option "Gestionnaire d'utilisateurs" > "Editer" > "Préférences" > décoche "Masquer les utilisateurs et groupes du système" :-P

Merci à tous pour votre aide et vos remarques... 😉
tchup wrote:
[root@Fedo MOI]# stat /home/MOI
  File: « /home/MOI »
  Size: 4096          Blocks: 8          IO Block: 4096   répertoire
Device: fd02h/64770d    Inode: 22544385    Links: 50
Access: (0700/drwx------)  Uid: (  500/  MOI)   Gid: (  500/  MOI)
le répertoire /home/MOI est en 700, donc personne hormis l'utilisateur MOI ne peut le traverser

un
chmod 755  /home/MOI
serait nettement mieux
tchup wrote:Je suis pas sûr de comprendre... désolé mais le service httpd utilise l'utilisateur apache ou root ?
Les deux mon capitaine, il se lance sous root pour pouvoir ouvrir un port inférieur à 1024 puis il forke sur l'utilisateur apache qui lui fait réellement tourner le serveur
root     30851     1  0 Apr13 ?        00:00:00   /usr/sbin/httpd
apache   30853 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30854 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30855 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30856 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30857 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30858 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30859 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   30860 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd
apache   31934 30851  0 Apr13 ?        00:00:00     /usr/sbin/httpd