Dans le billet originel, la configuration d'Apache et de PureFTP présentée est une configuration basique avec hébergement dans /var/www/html.


Elle présente quelques inconvénients dus à des conflits de droits sur les fichiers. Les utilisateurs virtuels de PureFTP ne pourront pas écraser un fichier appartenant à l'utilisateur apache (uid=48 sur une CentOS) par exemple. Cela conduit à régulièrement se connecter en root pour remettre à plat les propriétaires des fichiers et les droits.


Ça n'est pas très gênant si l'appli/site hébergé(e) change peu, ça le devient vite dans d'autres cas.


Une solution alternative est de créer un utilisateur normal dans le répertoire duquel on placera les applis et autres morceaux de sites. Apache devra alors être configuré de manière à rediriger vers ces répertoires lors d'une connexion.

Création d'un nouvel utilisateur dédié.

Par convention, pour la suite l'utilisateur dédié se nommera webdata et son groupe également. On supposera qu'il n'existe qu'un seul utilisateur sur le système ayant donc pour uid 500.


Soit via l'interface graphique disponible dans le menu Système > Administration > Utilisateurs et Groupes. Il suffit de s'identifier en donnant le mot de passe root puis de cliquer sur Ajouter un utilisateur.

Soit en ligne de commande :

# groupadd -g 501 webdata
# useradd -u 501 -s /bin/bash -m -g webdata webdata
# passwd webdata

Il est également possible d'empêcher la possibilité de connexion de cet utilisateur en spécifiant -s /sbin/nologin au lieu de -s /bin/bash. Personnellement j'ai préféré conserver la possibilité de me connecter en mode graphique à la session de l'utilisateur webdata.

Bon, ben puisqu'on a un nouvel utilisateur, on va tout de suite s'en servir : déconnectez-vous de votre session actuelle et reconnectez vous en tant que webdata (ou tout autre nom que vous aurez mis).


Création de la structure d'accueil.

Là, tout est histoire de choix personnel. Moi j'ai choisi de créer un dossier /home/webdata/html pour contenir les futures applications web et/ou sites puis des sous-dossiers nommé en fonction de leur contenu.

Ainsi, le dossier /home/webdata/html/pmb contiendra les fichiers de PMB

J'en ai également profité pour créer un dossier /home/webdata/modifs dans lequel je stocke les fichiers modifiés de mes différentes applis web. Ça simplifie la gestion des diff lors des mises à jour. Là encore, rien d'obligatoire.


Configuration d'Apache.

Toujours par souci de simplicité pour la gestion, plutôt que de modifier en dur le fichier de configuration d'Apache dans /etc/http/conf/http.conf, j'ai préféré créer un fichier annexe à la racine de /home/webdata.


Ce fichier, nommé sitesintranet.conf contient les définitions suivantes :

# declaration de pmb
<Directory "/home/webdata/html/pmb">
	Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
	AllowOverride FileInfo AuthConfig Limit
	Order allow,deny
	Allow from 127.0.0.1, 172.16.0.0/255.255.0.0
        AddDefaultCharset ISO-8859-1
</Directory>

Alias /pmb /home/webdata/html/pmb
Alias /PMB /home/webdata/html/pmb
Alias /cdi /home/webdata/html/pmb/opac_css
Alias /CDI /home/webdata/html/pmb/opac_css


# declaration de grr
<Directory "/home/webdata/html/grr">
	Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
	AllowOverride FileInfo AuthConfig Limit
	Order allow,deny
	Allow from 127.0.0.1, 172.16.0.0/255.255.0.0
        AddDefaultCharset ISO-8859-1
</Directory>

Alias /grr /home/webdata/html/grr
Alias /GRR /home/webdata/html/grr

Là, je vous renvoie à la doc d'Apache concernant la Directive Directory et le module Alias.

À noter, la limitation au sous-réseau 172.16.0.0 et la spécification du Charset ISO-8859-1. En effet, PMB et GRR n'ont pas l'air de trop aimer l'UTF8.

Il ne reste plus qu'à lier ce fichier avec la configuration d'Apache en faisant un petit

# ln -s /home/webdata/sitesintranet.conf /etc/httpd/conf.d/toto.conf

Bien sûr vous pouvez nommer votre lien autrement que toto.conf.

L'utilisateur apache doit pouvoir passer au travers de la structure pour lire les fichiers, il faut donc appliquer les droits suivants :

$ chmod o+x /home/webdata
$ chmod -R 775 /home/webdata/html

Il faut ensuite redémarrer le serveur Apache pour prendre en compte les modifications :

# service httpd restart


Pour la suite.

Vous pouvez reprendre la lecture du billet originel au niveau de la configuration de PureFTP, il faudra juste adapter les références de l'utilisateur en remplaçant 600 par l'uid/gid de webdata et les répertoires /var/www/html par /home/webdata/html.


Ainsi, ce sera bien l'utilisateur 501 (webdata) qui écrira par FTP dans son dossier, plus de problème de droits. Le seul inconvénient restant c'est qu'en cas de modification du fichier de conf sitesintranet.conf, il faudra tout de même se logger en root pour relancer le service httpd.