Fichiers DBM et Unix

Bien que la recherche des noms d’utilisateurs et des mots de passe dans un fichier fonctionne parfaitement, elle a tendance à être plutôt lente lorsque la liste comporte plusieurs centaines d’entrées. Pour améliorer le traitement de ces grandes listes, Apache permet les transformer en bases de données. Pour ce faire, vous aurez besoin de l’un de ces deux modules (pas les deux !) qui apparaissent dans le fichier Configuration :

#Module db_auth_module mod_auth_db.o

Module dbm_auth_module mod_auth_dbm.o

Ces modules fournissent, respectivement, les directives AuthDBUserFile et AuthDBMUserFile. Pour gérer ces deux types de bases de données, Apache fournit le script dbmmanage, qui se trouve dans .src/support.Pour choisir celui que vous utiliserez, vous devez connaître les possibilités de votre Unix. Pour ce faire, lancez d’abord cette commande à l’invite du shell :

% man db

puis celle-ci :

% man dbm

La méthode qui produit une page de manuel est celle que vous devez utiliser. Vous pouvez également utiliser une base de données SQL (MySQL ou autre).

Une fois que vous avez choisi votre méthode, modifiez le fichier de configuration pour inclure le module adéquat puis tapez :

% ./Configure

et :

% make

Nous devons maintenant créer une base de données pour nos utilisateurs bill, ben, sonia et daphne. Placez-vous dans le répertoire .apache/src/support et copiez l’utilitaire dbmmanage dans /usr/local/bin ou un répertoire de votre path. Cet outil n’a peut-être pas les droits d’exécution ; avant de l’exécuter, effectuez la commande suivante :

% chmod +x dbmmanage

Lorsque vous lancerez dbmmanage pour la première fois, vous constaterez peut-être qu’il se plaint assez bizarrement de l’absence d’un fichier sans nom. Comme dbmmanage est un script Perl, vous devez avoir installé cet interpréteur ; il vous faudra peut-être aussi modifier la première ligne du script :

#!/usr/bin/perl5

pour qu’elle contienne le chemin correct vers votre interpréteur Perl, s’il est installé ailleurs.

Si vous lancez le script avec l’option -?, vous obtiendrez :

Usage: dbmmanage [enc] dbname command [username [pw [group[,group] [comment]]]]

 

where enc is -d for crypt encryption (default except on Win32, Netware)

-m for MD5 encryption (default on Win32, Netware)

-s for SHA1 encryption

-p for plaintext

 

command is one of: add|adduser|check|delete|import|update|view

 

pw of . for update command retains the old password

pw of - (or blank) for update command prompts for the password

 

groups or comment of . (or blank) for update command retains old values

groups or comment of - for update command clears the existing value

groups or comment of - for add and adduser commands is the empty value

 

takes the following arguments:

dbmmanage [enc] dbname command [username [pw [group[,group] [comment]]]]

Ainsi, pour ajouter l’utilisateur bill à un fichier nommé /usr/www/APACHE3/ok_dbm/users, vous devrez faire :

% dbmmanage /usr/www/APACHE3/ok_dbm/users.db adduser bill

New password: voleur

Re-type new password: voleur

User bill added with password encrypted to vJACUCNeAXaQ2 using crypt

Faites la même chose pour ben, sonia et daphne. Le fichier .users n’est pas modifiable directement, mais vous pouvez voir son contenu en faisant :

% dbmmanage /usr/www/APACHE3/ok_dbm/users view

bill:vJACUCNeAXaQ2

ben:TPsuNKAtLrLSE

sonia:M9x731z82cfDo

daphne:7DBV6Yx4.vMjc

Vous pouvez créer un groupe avec dbmmanage mais, par suite d’erreurs dans son code que nous espérons corrigées lorsque vous lirez ce livre, le résultat peut sembler un peu curieux. Pour ajouter l’utilisateur fred au groupe cleaners, faites :

% dbmmanage /usr/www/APACHE3/ok_dbm/group add fred cleaners

(n’utilisez pas l’option adduser ). dbmmanage répond assez bizarrement avec le message suivant :

User fred added with password encrypted to cleaners using crypt

Si nous testons cet ajout avec :

% dbmmanage /usr/www/APACHE3/ok_dbm/group view

nous voyons apparaître :

fred:cleaners

ce qui est correct car dans un fichier de groupe, le nom du groupe prend la place du mot de passe chiffré.

Comme nous avons une structure de fichier similaire à celle utilisée précédemment, nous pouvons invoquer dans .conf/httpd.conf l’authentification DBM en commentant les lignes suivantes :

#AuthUserFile /usr/www/APACHE3/ok_users/sales

#AuthGroupFile /usr/www/APACHE3/ok_users/groups

et en ajoutant :

AuthDBMUserFile /usr/www/APACHE3/ok_dbm/users

AuthDBMGroupFile /usr/www/APACHE3/ok_dbm/users

AuthDBMGroupFile est initialisée avec le même fichier que AuthDBMUserFile car le nom d’utilisateur est la clé du fichier DBM et la valeur associée à cette clé est mot de passe : groupe. Pour créer un fichier de groupe séparé, on aurait besoin d’une base de données dans laquelle les noms des utilisateurs sont les clés et les groupes les valeurs (sans deux-points).

AuthDBUserFile

La directive AuthDBUserFile précise le nom d’un fichier DB contenant la liste des utilisateurs et des mots de passe pour leur authentification.

AuthDBUserFile fichier

Répertoire, .htaccess

fichier est le chemin absolu vers le fichier des utilisateurs.

Ce fichier est indexé sur les noms des utilisateurs. La valeur d’un utilisateur est un mot de passe chiffré par crypt(), éventuellement suivi d’un caractère deux-points et de données quelconques. Ce deux-points et ce qui le suit sera ignoré par le serveur.

Sécurité

Assurez-vous que le fichier AuthDBUserFile se trouve en dehors de l’arborescence des documents du serveur ; ne le placez pas dans le répertoire qu’il protège, sinon les clients pourront le télécharger.

Pour des raisons de compatibilité, l’implémentation de dbmopen des modules Apache lit la longueur des valeurs hachées dans les structures de données DB, plutôt que de se fier à des chaînes terminées par NULL. Certaines applications, comme le serveur web de Netscape, dépendent de ces dernières : si vous avez des problèmes lorsque vous faites passer des fichiers DB d’une application à l’autre, cela peut en être la cause.

AuthDBMUserFile

La directive AuthDBMUserFile précise le nom d’un fichier DBM contenant la liste des utilisateurs et des mots de passe pour leur authentification.

AuthDBMUserFile fichier

Répertoire, .htaccess

fichier est le chemin absolu vers le fichier des utilisateurs.

Ce fichier est indexé sur les noms des utilisateurs. La valeur d’un utilisateur est un mot de passe chiffré par crypt(), éventuellement suivi d’un caractère deux-points et de données quelconques. Ce deux-points et ce qui le suit sera ignoré par le serveur.

Sécurité

Assurez-vous que le fichier AuthDBMUserFile se trouve en dehors de l’arborescence des documents du serveur ; ne le placez pas dans le répertoire qu’il protège, sinon les clients pourront le télécharger.

Pour des raisons de compatibilité, l’implémentation de dbmopen des modules Apache lit la longueur des valeurs hachées dans les structures de données DB, plutôt que de se fier à des chaînes terminées par NULL. Certaines applications, comme le serveur web de Netscape, dépendent de ces dernières : si vous avez des problèmes lorsque vous faites passer des fichiers DBM d’une application à l’autre, cela peut en être la cause.

Apache La référence
titlepage.xhtml
APACHE-la-REF_split_000.htm
APACHE-la-REF_split_001.htm
APACHE-la-REF_split_002.htm
APACHE-la-REF_split_003.htm
APACHE-la-REF_split_004.htm
APACHE-la-REF_split_005.htm
APACHE-la-REF_split_006.htm
APACHE-la-REF_split_007.htm
APACHE-la-REF_split_008.htm
APACHE-la-REF_split_009.htm
APACHE-la-REF_split_010.htm
APACHE-la-REF_split_011.htm
APACHE-la-REF_split_012.htm
APACHE-la-REF_split_013.htm
APACHE-la-REF_split_014.htm
APACHE-la-REF_split_015.htm
APACHE-la-REF_split_016.htm
APACHE-la-REF_split_017.htm
APACHE-la-REF_split_018.htm
APACHE-la-REF_split_019.htm
APACHE-la-REF_split_020.htm
APACHE-la-REF_split_021.htm
APACHE-la-REF_split_022.htm
APACHE-la-REF_split_023.htm
APACHE-la-REF_split_024.htm
APACHE-la-REF_split_025.htm
APACHE-la-REF_split_026.htm
APACHE-la-REF_split_027.htm
APACHE-la-REF_split_028.htm
APACHE-la-REF_split_029.htm
APACHE-la-REF_split_030.htm
APACHE-la-REF_split_031.htm
APACHE-la-REF_split_032.htm
APACHE-la-REF_split_033.htm
APACHE-la-REF_split_034.htm
APACHE-la-REF_split_035.htm
APACHE-la-REF_split_036.htm
APACHE-la-REF_split_037.htm
APACHE-la-REF_split_038.htm
APACHE-la-REF_split_039.htm
APACHE-la-REF_split_040.htm
APACHE-la-REF_split_041.htm
APACHE-la-REF_split_042.htm
APACHE-la-REF_split_043.htm
APACHE-la-REF_split_044.htm
APACHE-la-REF_split_045.htm
APACHE-la-REF_split_046.htm
APACHE-la-REF_split_047.htm
APACHE-la-REF_split_048.htm
APACHE-la-REF_split_049.htm
APACHE-la-REF_split_050.htm
APACHE-la-REF_split_051.htm
APACHE-la-REF_split_052.htm
APACHE-la-REF_split_053.htm
APACHE-la-REF_split_054.htm
APACHE-la-REF_split_055.htm
APACHE-la-REF_split_056.htm
APACHE-la-REF_split_057.htm
APACHE-la-REF_split_058.htm
APACHE-la-REF_split_059.htm
APACHE-la-REF_split_060.htm
APACHE-la-REF_split_061.htm
APACHE-la-REF_split_062.htm
APACHE-la-REF_split_063.htm
APACHE-la-REF_split_064.htm
APACHE-la-REF_split_065.htm
APACHE-la-REF_split_066.htm
APACHE-la-REF_split_067.htm
APACHE-la-REF_split_068.htm
APACHE-la-REF_split_069.htm
APACHE-la-REF_split_070.htm
APACHE-la-REF_split_071.htm
APACHE-la-REF_split_072.htm
APACHE-la-REF_split_073.htm
APACHE-la-REF_split_074.htm
APACHE-la-REF_split_075.htm
APACHE-la-REF_split_076.htm
APACHE-la-REF_split_077.htm
APACHE-la-REF_split_078.htm
APACHE-la-REF_split_079.htm
APACHE-la-REF_split_080.htm
APACHE-la-REF_split_081.htm
APACHE-la-REF_split_082.htm
APACHE-la-REF_split_083.htm
APACHE-la-REF_split_084.htm
APACHE-la-REF_split_085.htm
APACHE-la-REF_split_086.htm
APACHE-la-REF_split_087.htm
APACHE-la-REF_split_088.htm
APACHE-la-REF_split_089.htm
APACHE-la-REF_split_090.htm
APACHE-la-REF_split_091.htm
APACHE-la-REF_split_092.htm
APACHE-la-REF_split_093.htm
APACHE-la-REF_split_094.htm
APACHE-la-REF_split_095.htm
APACHE-la-REF_split_096.htm
APACHE-la-REF_split_097.htm
APACHE-la-REF_split_098.htm
APACHE-la-REF_split_099.htm
APACHE-la-REF_split_100.htm
APACHE-la-REF_split_101.htm
APACHE-la-REF_split_102.htm
APACHE-la-REF_split_103.htm
APACHE-la-REF_split_104.htm
APACHE-la-REF_split_105.htm
APACHE-la-REF_split_106.htm
APACHE-la-REF_split_107.htm
APACHE-la-REF_split_108.htm
APACHE-la-REF_split_109.htm
APACHE-la-REF_split_110.htm
APACHE-la-REF_split_111.htm
APACHE-la-REF_split_112.htm
APACHE-la-REF_split_113.htm
APACHE-la-REF_split_114.htm
APACHE-la-REF_split_115.htm
APACHE-la-REF_split_116.htm
APACHE-la-REF_split_117.htm
APACHE-la-REF_split_118.htm
APACHE-la-REF_split_119.htm
APACHE-la-REF_split_120.htm
APACHE-la-REF_split_121.htm
APACHE-la-REF_split_122.htm
APACHE-la-REF_split_123.htm
APACHE-la-REF_split_124.htm
APACHE-la-REF_split_125.htm
APACHE-la-REF_split_126.htm
APACHE-la-REF_split_127.htm
APACHE-la-REF_split_128.htm
APACHE-la-REF_split_129.htm
APACHE-la-REF_split_130.htm
APACHE-la-REF_split_131.htm
APACHE-la-REF_split_132.htm
APACHE-la-REF_split_133.htm
APACHE-la-REF_split_134.htm
APACHE-la-REF_split_135.htm
APACHE-la-REF_split_136.htm
APACHE-la-REF_split_137.htm
APACHE-la-REF_split_138.htm
APACHE-la-REF_split_139.htm
APACHE-la-REF_split_140.htm
APACHE-la-REF_split_141.htm
APACHE-la-REF_split_142.htm
APACHE-la-REF_split_143.htm
APACHE-la-REF_split_144.htm
APACHE-la-REF_split_145.htm
APACHE-la-REF_split_146.htm
APACHE-la-REF_split_147.htm
APACHE-la-REF_split_148.htm
APACHE-la-REF_split_149.htm
APACHE-la-REF_split_150.htm
APACHE-la-REF_split_151.htm
APACHE-la-REF_split_152.htm
APACHE-la-REF_split_153.htm
APACHE-la-REF_split_154.htm
APACHE-la-REF_split_155.htm
APACHE-la-REF_split_156.htm
APACHE-la-REF_split_157.htm
APACHE-la-REF_split_158.htm
APACHE-la-REF_split_159.htm
APACHE-la-REF_split_160.htm
APACHE-la-REF_split_161.htm
APACHE-la-REF_split_162.htm
APACHE-la-REF_split_163.htm
APACHE-la-REF_split_164.htm
APACHE-la-REF_split_165.htm
APACHE-la-REF_split_166.htm
APACHE-la-REF_split_167.htm
APACHE-la-REF_split_168.htm
APACHE-la-REF_split_169.htm
APACHE-la-REF_split_170.htm
APACHE-la-REF_split_171.htm
APACHE-la-REF_split_172.htm
APACHE-la-REF_split_173.htm
APACHE-la-REF_split_174.htm