Скачиваний:
107
Добавлен:
01.05.2014
Размер:
329.22 Кб
Скачать

Обработчики

Обработчик (handler) - это фрагмент встроенного в Apache кода, который выполняет определенные действия, когда вызывается файл с содержимым конкретного типа MIME-типа или типа обработчика. Например, файл, для которого указан обработчик типа cgi-script, нужно выполнять как CGI-сценарий. В Apache встроен целый ряд обработчиков. К ним относятся:

Send-as-is

Передает файл без изменений, с HTTP-заголовками.

Cgi-script

Выполняет файл.

Imap-file

Именует файл сенсорного изображения.

Server-info

Получает конфигурацию сервера.

Server-status

Получает текущий статус сервера.

Server-parsed

Выполняет синтаксический анализ директив включения на стороне сервера.

Type-map

Выполняет синтаксический анализ var-файла для согласования содержимого.

Ниже приводятся соответствующие директивы:

AddHandler <имя_обработчика> расширение

Директива AddHandler активизирует существующий обработчик и ставит расширение имени файла в соответствие указанному имени обработчика. Например:

AddHandler cgi-script cgi

SetHandler <имя_обработчика>

Директива SetHandler делает то же самое, что и AddHandler, только применяет преобразование, заданное параметром <имя_обработчика> ко всем файлам или каталогам, указанным в директивах <directory>, <files>, <location> и в каталоге .htaccess.

Аутентификация

Часто возникает задача обеспечить доступ к некоторому узлу только доверенным людям. Для этого в Apache существует специальный набор директив.

AuthType <тип>

Задает тип контроля полномочий. В качестве параметра <тип> может быть использовано значение Basic - основной или Digest, в котором используются средства защиты MD5.

Если задается директива AuthType, то нужно также использовать директивы AuthName, AuthGroupFile uAuthUserFile.

AuthName <область>

Директива AuthName задает имя области, в которой имена и пароли пользователей действительны. Каждая пара имя/пароль действует в определенной области, указываемой при создании паролей. Браузер запрашивает URL, сервер посылает в ответ сообщение Authentication Required (код 401) и область. Если у браузера уже есть пользовательское имя и пароль для этой области, он посылает запрос вновь, на этот раз с именем и паролем. Если имени и пароля у браузера нет, он приглашает пользователя ввести их, а затем посылает ответ.

AuthGroupFile <имя_файла>

Эта директива не имеет ничего общего с директивой Group nogroup в файле конфигурации. Она задает имя другого файла, который содержит имена групп и их членов:

Managers: sonia john

Directors: bill ben

Указанные данные следует поместить в файл .../ok_users/groups и задать директиву AuthGroupFile с именем этого файла. Если должным образом не задана директива Require (описание приводится ниже), то ничего не происходит, потому что действует директива Group.

AuthUserFile <имя_фаила>

Директива AuthUserFile задает имя файла имен пользователей и их зашифрованных паролей.

<Limit метод 1 метод2 ...>

. . .

</Limit>

Аргумент метод определяет HTTP-метод. Например: <Limit GETPOST>

Эта директива ограничивает применение следующих за ней директив сценариями, в которых используются методы GET и POST. В секции <Limit> могут помещаться директивы order, allow, deny и require, но это не обязательно. Как правило, они там все же присутствуют, потому что сервер должен иметь возможность обрабатывать запросы, в которых используются другие методы, например, PUT, DELETE, CONNECT или HEAD. Для последних меры защиты либо не требуются, либо обеспечиваются по-другому. Примером, в котором защита при передаче используется для одних и не используется для других, может служить ситуация, где разрешено использование методов GET/HEAD и ограничено использование методов PUT/DELETE. Основная директива, которая вводит в действие проверку паролей, это require.

Require [user пользователь1 пользоватепь2 ...]

[group группа1 группа2 ..[valid-user]

Последний из возможных аргументов, valid-user, разрешает доступ всем пользователям, которые указаны в файле паролей системы.

Можно задать директиву

Require user bill john ben ,

и будут допущены только эти пользователи, при условии, что у них есть действительные записи в файле паролей. Директива

Require group managers

позволяет обращаться на узел только пользователям из группы managers, при условии, что у них есть действительные пароли и соответствующим образом определена директива AuthGroupFile.

Если все директивы в файле конфигурации были правильно определены, то при попытке пользователя обратиться к защищенному каталогу документов появляется окно для ввода имени пользователя и пароля.

Для того, чтобы добавить имя пользователя и его пароль в соответствующий файл в Apache существует утилита htpasswd:

# htpasswd [ключи] [имя_файла] [пользователь]

Эта программа имеет следующие параметры:

Ключи

-с создается новый файл с паролями

-m включается режим Digest-аутентификации (используется для повышения надежности паролей; в основе лежит метод шифрования MD5- криптографическая хеш-функция).

имя_файла

путь к файлу паролей

пользователь

имя добавляемого пользователя

Пример:

# htpasswd -cm /usr/local/WWW/ok_users/users ivan

Если количество пользователей в файле пароле слишком велико, могут возникнуть большие задержки при аутентификации пользователя, поскольку поиск в текстовом файле идет достаточно долго. Чтобы решить эту проблему, в Apache предусмотрен улучшенный способ обработки больших списков. Для этого необходимо установить при компиляции Apache один из следующих модулей:

Module db_auth_module mod_auth_db.o

Module dbm_auth_module mod_auth_dbm.o

Можно также воспользоваться SQL-базой данных, но для управления ей придется приобрести дополнительный пакет.

Для создания базы пользователей в Apache имеется утилита dbmmanage:

# dbmmanage файл_бозы_данных ключ [значение]

Для этой утилиты можно задавать следующие команды: add, adduser, view, delete, соответственно для добавления пользователей, просмотра базы и удаления пользователей из базы данных[10].

При использовании базы данных для хранения информации о пользователях в файле конфигурации сервера вместо AuthUserFile и AuthGroupFile нужно использовать соответственно AuthDBMUserFile и AuthDBMGroupFile.

Соседние файлы в папке Лекции по сетям в формате doc