Apache - Un espace pour chaque user

Apache possède par défaut un module permettant de créer un espace web pour chaque utilisateur présent sur le serveur. Ce module mod_userdir permet de parcourir la liste des utilisateurs du serveur et de regarder leurs dossiers correspondants, chaque dossier corresponda donc à un utilisateyr et deviendra la racine web.
En saisissant une adresse de type http://ip_server/~utilisateur) vous accéderez à son espace web personnel.

Configuration

Pour créer un espace web automatique pour chaque utilisateur possédant déjà un répertoire personnel sur le serveur il faut simplement activer le module et redémarrer Apache

# a2enmod userdir
# systemctl restart apache2

Création du dossier personnel

Le module mod_userdir scannera le contenu des dossiers utilisateurs dans /home/ à la recherche du dossier public_html. Il faut donc créer se dernier en lui attribuant les bons droits.

# mkdir /home/user/public_html
# chown root:www-data /home/user/public_html

Vous devriez pouvoir accéder à l’espace personnel de chaque utilisateur en allant sur http://ip_server/~utilisateur

Multidomaines

En cas de serveur multi-domaines les dossiers utilisateurs seront accessibles via TOUS les domaines présents sur le serveurs, même si le dossier public_html se trouve uniquement dans /home/aline/public_html exemple :

https://monsite.com/~aline
https://lesite.fr/~aline
http://autre-site.net/~aline
etc.

Changer le nom du répertoire

On peut changer le nom du répertoire par défaut qui sera systématiquement listé dans le fichier /etc/apache2/mods-available/userdir.conf

<IfModule mod_userdir.c>

#UserDir public_html
UserDir dossier_personnel
UserDir disabled root

[...]

Liste blanche

Le problème est que n’importe quel utilisateur qui ajoutera un dossier public_html sera accessible. Il est possible de limiter les accès en utilisant une liste blanche soit en modifiant directement le fichier /etc/apache2/mods-available/userdir.conf ainsi aucun utilisateur ne pourra avoir d’espace personnel sauf ceux listés

<IfModule mod_userdir.c>

UserDir disabled
UserDir disabled root

[...]

Soit il est possible de restreindre l’affichage pour un VHost

<VirtualHost *:80>

ServerName siteSensible.com

UserDir public_html

# Autorisation des utilisateurs à avoir un rép. perso par liste blanche :
UserDir disabled
UserDir enabled Alice Bob

[...]

Enlever la tilde ~ dans l’adresse

https://httpd.apache.org/docs/trunk/howto/public_html.html#page-header

Documentation

https://computerz.solutions/debian-apache-espace-web-pour-chaque-user-mod_userdir/
https://httpd.apache.org/docs/trunk/howto/public_html.html#page-header

> Partager <