|
DBM files are a simple and relatively standard method
of storing information for quick retrieval. Each item of information
stored in a DBM file consists of two parts: a key and a value. If
you know the key you can access the value very quickly. The DBM
file maintains an 'index' of the keys, each of which points to where
the value is stored within the file, and the index is usually arranged
such that values can be accessed with the minimum number of file
system accesses even for very large numbers of keys.
In practice, on many systems a DBM 'file' is actually
stored in two files on the disk. If, for example, a DBM file called
'users' is created, it will actually be stored in files called users.pag
and users.dir. If you ever need to rename or delete a DBM from the
command line, remember to change both the files, keeping the extensions
(.pag and .dir) the same. Some newer versions of DBM only create
one file.
Provided the key is known in advance DBM format files
are a very efficient way of accessing information associated with
that key. For web user authentication, the key will be the username,
and the value will store their (encrypted) password. Looking up
usernames and their passwords in a DBM file will be more efficient
than using a plain text file when more than a few users are involved.
This will be particularly important for sites with lots of users
(say, over 10,000) or where there are lots of accesses to authenticated
pages.
If you want to use DBM format files with Apache, you
will need to make sure it is compiled with DBM support. By default,
Apache cannot use DBM files for user authentication, so the optional
DBM authentication module needs to be included. Note that this is
included in addition to the normal user authentication module (which
uses plain text files, as explained in the previous article). It
is possible to have support for multiple file formats compiled into
Apache at the same time.
To add the DBM authentication module, edit your Configuration
file in the Apache src directory. Remove the comment from the line
which currently says # Module dbm_auth_module mod_auth_dbm.o To
remove the comment, delete the # and space character at the right-hand
end of the line. Now update the Apache configuration by running
./Configure, then re-make the executable with make.
However, before compiling you might also need to tell
Apache where to find the DBM functions. On some systems this is
automatic. On others you will need to add the text -lndbm or -ldbm
to the EXTRA_LIBS line in the Configuration file. (Apache 1.2 will
attempt to do this automatically if needed, but you might still
need to configure it manually in some cases). If you are not sure
what your system requires, try leaving it blank and compiling. If
at the end of the compilation you see errors about functions such
as _dbm_fetch() not being found, try each of these choices in turn.
(Remember to re-run ./Configure after changing Configuration). If
you still cannot get it to compile, you might have a system where
the DBM library is installed in a non-standard directory, or where
the there is no DBM library available. You could either contact
you system administrator, or download and compile your own copy
of the DBM libraries (a good choice might be GDBM: read about it
or download it).
|
|

 |