Стандартный модуль аутентификации, mod_auth, хранит данные идентификации пользователей в текстовых файлах, поиск в которых осуществляется последовательно. На последовательный поиск может уходить значительное время, даже для нескольких сотен записей.
Чтобы повысить производительность на данном этапе работы, воспользуйтесь базой данных с возможностью индексирования. Поддержка баз данных аутентификации осуществляется двумя модулями: mod_auth_db, который работает с базами данных Berkeley DB, либо mod_auth_dbm, который работает с базами данных Unix DBM. В базовой настройке Solaris динамически загружается модуль mod_auth_dbm, так что мы можем использовать базу данных паролей в системе Solaris, затратив минимум усилий. База данных паролей в применении мало чем отличается от последовательной базы. Если говорить о приведенном выше примере, мы можем перейти к использованию базы данных паролей, всего лишь заменив инструкцию AuthUserFile на инструкцию AuthDBMUserFile, а инструкцию AuthGroupFile на AuthDBMGroupFile. Вот пример:
<Directory "/var/apache/htdocs/internal/accounting"> AuthName "Accounting" AuthType Basic AuthDBMUserFile /etc/apache/passwords AuthDBMGroupFile /etc/apache/groups Require hdqtrs rec bil l pay Order deny,allow Deny from al l Allow from Limit> </Directory>
Этими небольшими изменениями все и ограничивается для файла httpd.conf. Самые серьезные изменения при переходе на базы данных паролей связаны с тем, что пароли определяются теперь совсем не по команде htpassword. Вместо нее для создания записей паролей и групп используется коман- да dbmmanage, синтаксис которой приведен ниже:
dbmmanage filename command username password
Элементы командной строки dbmmanage по большей части прозрачны, filename - это имя файла базы данных, username и password - те самые данные, что должны храниться в базе данных паролей, command - одно из ключевых слов, определяющих назначение данной команды dbmmanage. Существуют следующие ключевые слова:
add
Добавляет имя пользователя и пароль в базу данных. Пароль должен быть предварительно зашифрован, поскольку dbmmanage не шифрует пароль по ключевому слову add. См. описание ключевого слова adduser.
adduser
Добавляет имя пользователя и пароль в базу данных. Пароль записывается открытым текстом и шифруется программой dbmmanage.
check
Проверяет соответствие имени пользователя и пароля той паре, что хранится в базе данных.
delete
Удаляет из базы данных имя пользователя и пароль.
import
Копирует записи username:password со стандартного потока ввода. Предполагается, что пароли уже зашифрованы.
update
Изменяет пароль для пользователя, запись которого уже существует в ба- зе данных.
view
Отображает содержимое базы данных.
В следующем примере создается файл /etc/apache/passwords, после чего в базу данных добавляются два новых пользователя:
# dbmmanag e /etc/apache/passwords adduser sara New password: Re-type new password: User sara added with password encrypted to XsH4aRiQbEzp2 # dbmmanag e /etc/apache/passwords adduser alana New password: Re-type new password: User alana added with password encrypted to AslrgF/FPQvF6 # dbmmanag e /etc/apache/passwords view alana:AslrgF/FPQvF6 sara:XsH4aRiQbEzp2
Обратите внимание, что если пароль не указан в командной строке, dbmmanage предлагает ввести его. Все приведенные примеры осуществляют управление доступом для отдельных каталогов. Такое же управление доступом может выполняться для всех каталогов сервера либо отдельных документов. Чтобы задействовать механизмы управления доступом для всех документов сервера, достаточно просто разместить инструкции управления вне контейнера Directory; инструкции управления внутри контейнера Directory действуют на один каталог. Чтобы задействовать механизмы управления для отдельных файлов или документов, достаточно поместить соответствующие инструкции внутри контейнера Files или Document.