Управление доступом с использованием пар имя/пароль
Для введения ограничений на доступ ко всем документам определенного каталога необходимо создать в этом каталоге файл управления доступом. Этот файл имеет фиксированное имя, определяемое параметром AccessFileName файла конфигурации доступа. По умолчанию, это файл .htaccess.
Пример содержимого файла .htaccess
AuthUserFile /otherdir/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
<Limit GET>
require user pumpkin
</Limit>
AuthUserFile указывает путь файла паролей, который должен находиться вне данного каталога.
Limit GET ограничивает доступ по методу GET, предоставляя его только пользователю pumpkin. Для ограничения других методов доступа (например, в каталогах CGI) используется перечисление всех методов:
<Limit GET POST PUT>
require user pumpkin
</Limit>
Для создания файла паролей необходимо воспользоваться утилитой htpasswd, входящей в состав дистрибутива сервера:
htpasswd -c /otherdir/.htpasswd pumpkin
После запуска она дважды запросит пароль для пользователя pumpkin и создаст файл паролей /otherdir/.htpasswd.
Использование нескольких пар имя/пароль
Использование нескольких пар имя/пароль достигается путем описания группы, в которую входят несколько пользователей, и указания имени группы в операторе Limit.
htpasswd /otherdir/.htpasswd peanuts
htpasswd /otherdir/.htpasswd almonds
htpasswd /otherdir/.htpasswd walnuts
my-users: pumpkin peanuts almonds walnuts
где my-users - имя группы,
pumpkin, peanuts, almonds, walnuts - список пользователей, входящих в группу.
AuthUserFile /otherdir/.htpasswd
AuthGroupFile /otherdir/.htgroup
AuthName ByPassword
AuthType Basic
<Limit GET>
require group my-users
</Limit>
Все документы данного каталога будут доступны всем членам группы my-users после проведения процедуры аутентификации (ввода пароля).
Ограничение доступа по сетевому имени
В этом случае управление доступом осуществляется на основе сравнения сетевого имени машины - клиента с заранее заданным образцом. Если выявится совпадение, начинают действовать специальные правила доступа.
Пример ограничения доступа на чтение. Чтение разрешено всем пользователям машин домена cnit.nsu.ru:
Содержимое файла .htaccess:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromCNIT
AuthType Basic
<Limit GET>
order deny, allow
deny from all
allow from .cnit.nsu.ru
</Limit>
Оператор order указывает порядок определения требований к доступу:
сначала ограничения, затем разрешения.
deny from all - сначала запрещает доступ для всех,
allow from .cnit.nsu.ru - затем разрешает доступ для машин домена cnit.nsu.ru.
Оператор AuthName задает имя данного ограничения доступа - произвольную комбинацию букв и цифр.
Пример запрета на доступ для всех машин домена nstu.nsk.su:
Содержимое файла .htaccess:
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName ExampleAllowFromCNIT
AuthType Basic
<Limit GET>
order allow, deny
deny from .nstu.nsk.su
allow from all
</Limit>
Исторически сложилось, что в России распространены несколько русскоязычных кодировок, в основном ориентированных на разные платформы. Наиболее известные из них:
Специалисты утверждают что всего в России имеют хождение 11 кодировок русского алфавита.
Если Ваш WWW сервер ориентирован на использование внутри организации или его пользователями будет являться ограниченный круг людей с однотипными рабочими местами, Вы можете ограничиться одной кодировкой русскоязычной информации на сервере.
Сложности возникают, когда Вы захотите расширить круг клиентов сервера. Вам необходимо будет организовать поддержку нескольких кодовых страниц для русскоязычных документов. Приведенный выше список из четырех кодировок удовлетворит более 99% всех возможных абонентов сервера.
Вообще говоря, в составе языка HTML имеются теги, определяющие кодировку документа и должные позволить корректно прочитать документ в любой кодировке. Однако в связи с тем, что эти теги не поддерживаются ни одним из известных броузеров, надеяться на них не стоит. Возможно, в будущем эта ситуация изменится, и проблема с кодировками будет решена.
Для поддержки нескольких кодовых страниц применяется множество методов, которые можно разбить на две группы:
В первом случае, на сервере физически присутствуют все файлы во всех поддерживаемых кодировках. Документы в различных кодировках отличаются между собой по правилам образования путей и имен.
Например:
indexw.html, indexa.html - добавление суффиксов, определяющих кодировку. Или
.../koi8/index.html, .../win/index.html - различные базовые каталоги для разных кодировок.
При этом выделяется одна мастер - кодировка, в которой новые документы располагаются на сервере, а все остальные варианты документов получаются после работы специальной программы - перекодировщика. Программа - перекодировщик может запускаться вручную - администратором WWW сервера или автоматически, с использованием команд cron, at.
Во втором случае, доступ к документам осуществляется через дополнительную программу - перекодировщик, динамически перекодирующую документы сервера в кодировку WWW - клиента. Эта программа может быть CGI - программой, через которую всегда осуществляется доступ к русскоязычной части сервера. На вход такой программе передается реальный путь документа и кодировка WWW - клиента, в которую нужно перекодировать указанный документ (см. рис. 12.1)
Программа - перекодировщик может также располагаться между WWW - клиентом и сервером (см.рис.12.2). В таком варианте она называется PROXY.
Однако здесь возникает проблема с перекодировкой всех данных, включая графику, видео, аудио и других нетекстовых материалов. Для ее решения PROXY придается дополнительный интеллект - определять тип передаваемых данных по заголовку MIME и решать, перекодировать документ или нет, на основе его типа. Программы - перекодировщики с различными кодировками обрабатывают обращения к разным портам tcp сервера. Клиенту работа с PROXY видна в URL.
Например:
http://www.nsu.ru:80/index.html - для кодировки КОИ-8,
http://www.nsu.ru:8000/index.html - для кодировки ISO-8859-5 и т.д.