Serveur HTTP Apache Version 2.5

Apache > Serveur HTTP > Documentation > Version 2.5 > Modules

# Module Apache mod_userdir

Description: | Répertoires propres à un utilisateur
Statut: | Base
Identificateur de Module: | userdir_module
Fichier Source: | mod_userdir.c

### Sommaire

En activant ce module, vous permettez à plusieurs utilisateurs de stocker des contenus sous un seul noeud de l'arborescence. La politique de stockage sous un seul noeud de l'arborescence est un principe clé de Javascript et de la sécurité du web. En stockant des pages web sous un seul noeud de l'arborescence, celles-ci peuvent se lire et se contrôler mutuellement et d'éventuels problèmes de sécurité liés à une page peut affecter les autres. Ceci peut s'avérer particulièrement dangereux dans le cas des pages web mettant en oeuvre du contenu dynamique et de l'authentification et lorsque les utilisateurs ne se voient pas tous forcément d'un bon oeil.

Ce module permet l'accès aux répertoires propres à un utilisateur en utilisant la syntaxe `http://example.com/~utilisateur/`.

### Directives

### Traitement des bugs

- Journal des modifications de httpd
- Problèmes connus
- Signaler un bug

### Voir aussi

- Mise en correspondance des URLs avec le système de fichiers
- Tutoriel public_html

## Directive UserDir ¶

Description: | Chemin des répertoires propres à un utilisateur
Syntaxe: | `UserDir nom-répertoire [nom-répertoire] ...`
Contexte: | configuration globale, serveur virtuel
Statut: | Base
Module: | mod_userdir

La directive `UserDir` permet de définir le répertoire réel du répertoire home d'un utilisateur à utiliser à la réception d'une requête pour un document de cet utilisateur. nom-répertoire peut se présenter sous la forme suivante :

- Le nom d'un répertoire ou un modèle tel que ceux présentés ci-dessous.
- Le mot-clé `disabled`. Toutes les traductions nom d'utilisateur vers répertoire sont alors désactivées, à l'exception de celles comportant le mot-clé `enabled` (voir ci-dessous).
- Le mot-clé `disabled` suivi d'une liste de noms d'utilisateurs séparés par des espaces. Les noms d'utilisateurs apparaissant dans une telle liste ne feront jamais l'objet d'une traduction vers un répertoire, même dans le cas où ils apparaîtront dans une clause `enabled`.
- Le mot-clé `enabled` suivi d'une liste de noms d'utilisateurs séparés par des espaces. Les noms d'utilisateurs apparaissant dans une telle liste seront traduits en répertoires même dans le cas où une clause disable globale est active, mais pas s'ils apparaissent aussi dans une clause `disabled`.

Si aucun mot-clé `enabled` ou `disabled` n'apparait dans la directive `Userdir`, l'argument est traité en tant que modèle de fichier, et utilisé pour traduire le nom d'utilisateur en une spécification de répertoire. Une requête pour `http://www.example.com/~bob/un/deux.html` sera traduite en :

Directive Userdir utilisée | Chemin traduit
--- | ---
UserDir public_html | ~bob/public_html/un/deux.html
UserDir /usr/web | /usr/web/bob/un/deux.html
UserDir /home/*/www | /home/bob/www/un/deux.html

Les directives suivantes vont envoyer des redirections au client :

Directive Userdir utilisée | Chemin traduit
--- | ---
UserDir http://www.example.com/utilisateurs | http://www.example.com/utilisateurs/bob/un/deux.html
UserDir http://www.example.com/*/usr | http://www.example.com/bob/usr/un/deux.html
UserDir http://www.example.com/~*/ | http://www.example.com/~bob/un/deux.html

Soyez prudent avec cette directive ; par exemple, `"UserDir ./"` ferait correspondre `"/~root"` à `"/"` - ce qui n'est probablement pas souhaité. Il est fortement recommandé d'inclure une déclaration "`UserDir disabled root`" dans votre configuration. Voir aussi la directive `Directory` et la page Conseils en matière de sécurité pour plus d'informations.

Exemples supplémentaires :

Pour permettre à quelques utilisateurs et seulement à ceux-ci de posséder des répertoires `UserDir`, utilisez la configuration suivante :

    UserDir disabled
    UserDir enabled user1 user2 user3

Pour permettre à la plupart des utilisateurs de posséder des répertoires `UserDir`, mais l'interdire à quelques uns, utilisez la configuration suivante :

    UserDir disabled utilisateur4 utilisateur5 utilisateur6

Il est aussi possible de spécifier des répertoires utilisateurs alternatifs. Si vous utilisez une commande comme :

    UserDir "public_html" "/usr/web" "http://www.example.com/"

Avec une requête pour `http://www.example.com/~bob/un/deux.html`, le serveur tentera tout d'abord de trouver la page à `~bob/public_html/un/deux.html`, puis à `/usr/web/bob/un/deux.html`, et enfin il enverra une redirection vers `http://www.example.com/bob/un/deux.html`.

Si vous spécifiez une redirection, elle doit être la dernière alternative de la liste. Apache httpd ne pouvant pas déterminer si la redirection a réussi, si cette dernière ne se trouve pas en fin de liste, c'est cette alternative qui sera toujours utilisée.

La substitution de répertoire utilisateur n'est pas activée par défaut depuis la version 2.1.4. Dans les versions précédentes, `UserDir public_html` était sous-entendu si aucune directive `UserDir` n'était présente.

### Détails à propos de la fusion

Lorsqu'on passe du contexte global au contexte de serveur virtuel, les listes d'utilisateurs spécifiques activés ou désactivés sont remplacées par les listes du contexte, et non fusionnées.

### Voir aussi

- Tutoriel sur les répertoires web utilisateur