- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Обработчики
Обработчик (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.
