mod_authz_owner
Autorisation basée sur l'appartenance des fichiers
Extension
mod_authz_owner.c
authz_owner_module
Disponible depuis les versions 2.1 et supérieures d'Apache

Ce module permet de contrôler l'accès aux fichiers en comparant l'identifiant utilisateur ayant servi à l'authentification HTTP (l'identifiant utilisateur web) avec le propriétaire ou le groupe du fichier demandé du point de vue du système de fichiers. Le nom d'utilisateur et le mot de passe doivent déjà avoir été vérifiés par un module d'authentification comme mod_auth_basic ou mod_auth_digest. mod_authz_owner reconnaît deux arguments pour la directive Require : `file-owner` et `file-group` :

`file-owner`
  Le nom d'utilisateur web utilisé pour l'authentification doit correspondre au nom système du propriétaire du fichier demandé. En d'autres termes, si le système indique `jones` comme propriétaire du fichier demandé, le nom d'utilisateur fourni pour l'authentification HTTP doit aussi être `jones`.
`file-group`
  Le nom du groupe système du fichier demandé doit être présent dans une base de données de groupes fournie, par exemple, par mod_authz_groupfile ou mod_authz_dbm, et le nom d'utilisateur web fourni pour l'authentification doit être un membre de ce groupe. Par exemple, si le système indique que le groupe (système) du fichier demandé est `accounts`, le groupe `accounts` doit apparaître dans la base de données des groupes, et le nom d'utilisateur web utilisé pour l'authentification doit être un membre de ce groupe.

# Note

Si le module mod_authz_owner est utilisé pour vérifier l'autorisation d'accès à une ressource qui n'est pas vraiment présente dans le système de fichiers (en d'autres termes une ressource virtuelle), il refusera l'accès.

En particulier, il n'accordera jamais l'accès à une ressource du type "Vues multiples" (MultiViews) d'un contenu négocié.

Require

# Exemples de configuration

## Require file-owner

Considérons un serveur Web Apache fonctionnant sous un système multi-utilisateurs, où les fichiers de chaque utilisateur sont stockés dans `~/public_html/private`. En supposant qu'il n'existe qu'une seule base de données contenant les noms d'utilisateurs web, et que ces noms d'utilisateurs correspondent aux noms d'utilisateurs système qui sont les propriétaires effectifs des fichiers, la configuration de l'exemple suivant n'accordera l'autorisation d'accès aux fichiers qu'à leur propriétaire. L'utilisateur `jones` ne sera pas autorisé à accéder aux fichiers situés dans `/home/smith/public_html/private`, à moins que leur propriétaire ne soit `jones` au lieu de `smith`.

<Directory /home/*/public_html/private>
AuthType Basic
AuthName mes-fichiers-prive
AuthBasicProvider dbm
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
Require file-owner
</Directory>

## Require file-group

Considérons un système similaire à celui décrit ci-dessus, mais où certains utilisateurs partagent leurs fichiers de projets dans `~/public_html/project-foo`. Le groupe système des fichiers est `foo`, et il n'existe qu'une seule base de données AuthDBMGroupFile qui contient tous les noms d'utilisateurs web et leurs groupes d'appartenance. Ces noms d'utilisateurs web doivent alors appartenir au moins au groupe `foo`. En d'autres termes, si `jones` et `smith` sont tous deux membres du groupe `foo`, ils seront autorisés à accéder aux répertoires `project-foo` de chacun d'entre eux.

<Directory /home/*/public_html/project-foo>
AuthType Basic
AuthName "Project Foo Files"
AuthBasicProvider dbm
# combined user/group database
AuthDBMUserFile /usr/local/apache2/etc/.htdbm-all
AuthDBMGroupFile /usr/local/apache2/etc/.htdbm-all
Satisfy All
Require file-group
</Directory>