Лабораторная работа №6

Теоретические предпосылки

Сервер Apache. Настройка сервера

Сервер Apache имеет три файла конфигурации.Эти файлы позволяют настроить все стороны функционирования сервера. После того как вы отредактируете эти файлы в соответствии с вашими требованиями, можете запускать сервер. Никакой другой настройки не требуется.

httpd.conf: файл конфигурации сервера

Приведенные ниже описания послужат в качестве указаний. Они не являются исчерпывающими инструкциями, однако затрагивают те изменения, которые, возможно,придется внести, чтобы заставить сервер работать. Единственной строкой, которую необходимо изменить, является строка, начинающаяся с “ServerAdmin”. Остальным директивам по умолчанию присвоены разумные значения, поэтому вносить в них изменения вряд ли потребуется.

ServerType

Для этой директивы значением по умолчанию является ServerType standalone. Серверы, работающие в автономном режиме (standalone), запускаются из загрузочных сценариев при запуске системы. Такая установка рекомендуется для улучшения производительности.

Серверу Apache (как и большинству традиционных серверов UNIX) для каждого соединения требуется запускать отдельную копию. Система UNIX оптимизирована специально для такого поведения, и накладные расходы на создание процессом собственной копии невелики. После запуска сервер,работающий в автономном режиме, начинает прослушивание на предмет наличия запросов на соединение. Обнаружив такой запрос, сервер “раздваивается” для его обслуживания. Когда копия заканчивает работу, она завершается. Эту основную модель можно изменить при помощи директив StartServers и MaxServers, как объясняется ниже.

В качестве альтернативы режиму standalone можно воспользоваться режимом inetd, который обеспечивается демоном inetd.

Port

В этой директиве задается номер сетевого порта, на котором будет работать ваш сервер, если он запущен в автономном режиме (если используется inetd, то номер порта следует задать в файле /etc/services).

Значением по умолчанию для этой директивы является Port 80. К этому порту Web-броузеры пытаются подключиться по умолчанию, и он является стандартным портом для протокола HTTP и рекомендуется для использования на основном сервере вашего Web-узла. Если вы хотите запустить сервер на этом порту или на любом другом, номер которого меньше 1024, то вам потребуются привилегии суперпользователя (root).

Если вы не обладаете в этой системе привилегиями суперпользователя, то все-таки остается возможность запустить Web-сервер на порту с номером, превосходящим 1024. Вам только придется объявить об этом и включить номер порта в адрес URL; обычно используют номера 8000 или 8080. В дальнейшем предполагается, что вы обладаете правами суперпользователя в своей системе, и сервер запущен на порту, принятом по умолчанию.

HostnameLookups

Директива HostnameLookups указывает, записывается ли в журнальный файл имя компьютера (например, macl.shoop.com) или только его IP-адрес (например, 152.2.22.81). По умолчанию сервер сохраняет имя компьютера, но если ожидаемый объем графика очень велик, отключение опции HostnameLookups позволит немного уменьшить нагрузку на сервер. Это делается простым изменением строки на “HostnameLookups off”.

User и Group

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

По умолчанию в качестве имени пользователя принимается nobody, что является превосходным выбором с точки зрения защиты информации. Такое имя гарантирует, что Web-сервер получит доступ только к тем файлам, к которым разрешен доступ на чтение для всех пользователей. Альтернативой является создание в системе специального пользователя и использование для работы Web-сервера его идентификатора. Какой бы идентификатор ни использовался, следует убедиться, что для него не существует доступа к системе через интерфейс командной строки. Ни в коем случае нельзя запускать сервер с привилегиями суперпользователя (root).

В качестве идентификатора группы следует использовать идентификатор какой-нибудь нейтральной группы, имеющейся в системе. Часто используется группа news. Либо можно специально создать для сервера новую группу. Если указанные пользователь и группа не существуют в системе, сервер не будет работать.

ServerAdmin alex@cel.tup

Это официальный электронный адрес вебмастера вашего Web-узла.

ServerRoot

В этой директиве задается базовый каталог, в котором будет установлено программное обеспечение HTTP-сервера Apache. По умолчанию это каталог /usr/local/apache.

BindAddress

Эта директива используется только для компьютеров, имеющих более одного IP-адреса. С ее помощью можно устанавливать прослушивание сервером еще какого из IP-адресов компьютера.По умолчанию эта директива закомментирована, и сервер производит прослушивание всех адресов компьютера.

ErrorLog /usr/local/apache/logs/error_log
CustomLog /usr/local/apache/logs/access_log common

При помощи этих двух директив задается местоположение журнальных файлов, в которых регистрируются ошибки и попытки доступа к серверу соответственно.В файле, указанном в директиве ErrorLog, сервер сохраняет сообщения диагностики, включая сообщения об ошибках, выдаваемые сценариями CGI. В файле, указанном в директиве CustomLog, сервер сохраняет все запросы клиентов. Если включена описанная выше опция HostnameLookups, то вместе с запросами регистрируются имена компьютеров. Если опция выключена, то регистрируются только IP-адреса компьютеров клиентов.

PidFile /usr/local/apache/logs/httpd.pid

PidFile: Файл, куда сервер при запуске должен записывать свой номер идентификации процесса.

ScoreBoardFile /usr/local/apache/logs/apache_status

ScoreBoardFile: Учетный файл, используемый для хранения внутренней информации процесса сервера. Это требуется не всеми архитектурами. Если в вашей - требуется (об этом можно судить по тому, будет ли создан такой файл, когда вы запустите Apache), то вы ДОЛЖНЫ обеспечить, чтобы никакие два экземпляра процесса Apache не использовали бы один и тот же учетный файл.

ServerName

Директива ServerName задать имя хоста, возвращаемое клиенту, если это имя отличается от того имени, которое получила программа.Имя, которое вы определяете здесь, должно быть действительным именем DNS для вашего хоста.Если ваш хост не имеет зарегистрированного имени DNS, вы можете указать здесь его адрес IP. В таком случае вам придется обращаться к нему по адресу (например, http://192.168.70.70/) и это может сильно осложнить переадресацию ресурсов.

CacheNegotiatedDocs

CacheNegotiatedDocs: По умолчанию с каждым документом Apache отправляет инструкцию "Pragma: no-cache", что является указанием proxy-серверам не кэшировать данный документ. Если раскомментировать следующую строку, то поведение proxy-серверов изменится и им будет разрешено кэшировать документы.

Timeout 300

Это промежуток времени в секундах, в течение которого сервер ждет продолжения недополученного запроса или продолжает попытки возобновления приостановленной передачи ответа. Если у вас медленное соединение с Интернетом или вам приходится передавать большие файлы, увеличьте это значение.

KeepAlive on

KeepAlive является свойством протокола HTTP I.I, позволяющим ускорить обработку запросов. HTTP 1.0 при каждом запросе на передачу объекта создает новое соединение между клиентом и сервером. В сервере Apache реализована свойственная протоколу HTTP 1.1 возможность KeepAlive, что означает возможность запрашивать несколько объектов в рамках одного соединения. Например, раньше передача Web-страницы с четырьмя встроенными изображениями потребовала бы пять отдельных соединений, а с использованием KeepAlive все последовательные запросы производятся в рамках одного соединения. Очевидно, что это сокращает время обработки запросов сервером. Клиент также должен уметь производить такие специальные запросы.

MaxKeepAliveRequests 100

MaxKeepAliveRequests: Максимальное число запросов, допустимое в одном долговременном соединении. Для снятия ограничений укажите значение 0, но для максимального быстродействия мы рекомендуем указать заведомо большое конкретное значение.

KeepAliveTimeout 15

Параметр KeepAliveTimeout отражает промежуток времени между последовательными запросами.

StartServers 5

Директива StartServers в файле httpd.conf стоит после директив MinSpareServers и MaxSpareServers, однако понять значение директив Min- и MaxSpareServers значительно легче, если сначала разобраться с директивой StartServers.
Когда выбирается автономный (standalone) режим работы сервера (ServerType) и для параметра StartServers задается значение, большее 1 (по умолчанию принимается значение 5), вместо запуска одного экземпляра сервер при старте создает несколько копий,образуя пул серверов. Исходная копия сервера выступает в качестве планировщика для всех серверов в пуле, принимая соединения и передавая их свободным копиям. Теоретически, такая стратегия ускоряет процесс обслуживания запросов. На практике этим эффектом можно пренебречь, если сервер не является очень загруженным (более 100 000 запросов в день).

MinSpareServers 5
MaxSpareServers 10

Если число поступающих запросов превышает число серверов в пуле, заданное параметром StartServers, буфер серверов увеличивается для обслуживания запросов. Эти дополнительные процессы-серверы не завершаются после обработки запроса, ради которого они были запущены; они остаются в памяти. Директива MaxSpareServers позволяет настраивать число свободных серверов,находящихся в пуле. Если их больше, чем указано в директиве MaxSpareServers, то лишние процессы завершаются. Аналогично, если свободных серверов в пуле меньше, чем допускает директива MinSpareServers, то в преддверии наплыва запросов создаются дополнительные копии сервера. Однако изменение этих настроек мало отражается на работе большинства Web-серверов.

MaxClients 150

Директива MaxClients устанавливает максимальное число копий сервера, которые могут выполняться одновременно. Когда достигается этот предел (по умолчанию — 150), новые запросы получают отказ. Если вам не хочется отказывать пользователям, не устанавливайте слишком маленькое значение. Медленный ответ все-таки лучше, чем отсутствие какого-либо ответа вообще.

MaxRequestsPerChild 30

В этой директиве задается время жизни любого отдельного сервера в пуле серверов. Обработав установленное здесь количество запросов (по умолчанию — 30), копия сервера завершается, а вместо нее запускается новая. В большинстве систем изменение этого параметра не дает заметного эффекта.

Listen 3000
Listen 12.34.56.78:80

Listen: Позволяет привязать Apache к конкретному адресу IP, и/или порту, в дополнение к порту, определенному по умолчанию.

srm.conf: карта ресурсов сервера

Карта ресурсов сервера srm.conf, указывает, откуда и каким образом сервер Apache должен брать файлы для передачи пользователям. Она позволяет преобразовать абстрактный мир адресов URL, поступающих серверу от клиентов, в реальные файлы и каталоги на компьютере, на котором работает сервер.

DocumentRoot "/usr/local/apache/htdocs"

В этой директиве задается каталог, из которого берутся передаваемые клиентам документы. Можно предоставлять клиентам и файлы, находящиеся в других каталогах, — для этого используются символьные ссылки.

UserDir public_html

Название каталога, которое прибавляется к именам пользовательских домашних каталогов при получении запроса ~user (напр."http://www.server.com/~ismm25").Если вам не требуется использовать возможность пользовательских каталогов, следует указать UserDir DISABLED.

DirectoryIndex index.html

Эта директива позволяет задать название документа, возвращаемого по запросу, который не содержит в строке URL названия документа. Если вы указываете несколько имен, разделяйте их пробелами.Например, чтобы разрешить в качестве индексных страниц предавать файлы index.html или index.htm, поместите в строку Directorylndex следующие значения:DirectoryIndex index.html index.htm

IndexOptions FancyIndexing

При получении запроса на передачу каталога сервер Apache:

• находит файл, указанный в директиве DirectoryIndex (если таковой существует), и передает его клиенту;
• если файл DirectoryIndex не существует, передает клиенту оглавление каталога.

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

Директивы AddIcon* указывают серверу, какими иконками украшать имена файлов в листинге каталога. Иконки изображаются только в режиме FancyIndexing.

DefaultIcon /icons/unknown.gif

DefaultIcon указывает, какой иконкой следует украшать файлы, для которых  иконка не задана явно.

AddDescription позволяет размещать краткое описание после имени файла в индексах (листингах каталогов), сгенерированных сервером. Такие описания выводятся только в режиме FancyIndexing.Формат: AddDescription "строка_описания" .расширение_имени_файла

AddDescription "GZIP compressed document" .gz
AddDescription "tar archive" .tar
AddDescription "GZIP compressed tar archive" .tgz

ReadmeName задает имя README-файла, который добавляется к листингу каталога по умолчанию. HeaderName указывает имя файла, который будет выводиться в заголовке листингов каталога.Сначала сервер попытается открыть файл имя.html, и включит его в листинг, если он существует. Если файл имя.html не существует, сервер попытается открыть файл имя.txt и включить его в виде простого текста.

ReadmeName README
HeaderName HEADER

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

IndexIgnore представляет набор имен файлов, которые должны быть исключены из
листинга. В именах допустимы метасимволы подстановки в стиле shell.

AccessFileName .htaccess

Имя файла, который сервер ищет в каждом каталоге для  определения прав доступа.

DefaultType text/plain

Директива DefaultType определяет MIME-тип, который будет использоваться для какого-либо документа, если сервер не сможет определить его по иным признакам, например по расширению имени файла. Если ваш сервер содержит по большей части тексты или HTML-документы, "text/plain" является приемлемым решением. Если большая часть содержимого является исполняемыми файлами или изображениями, вы можете поменять значение на "application/octet-stream", чтобы предотвратить попытку браузера показать содержимое двоичного файла.(Чтобы подсказать броузеру, что ему предстоит обрабатывать, сервер формирует определенный код типа документа, основываясь на спецификации MIME - Multipurpose Internet Mail Extensions - многоцелевые почтовые расширения Internet).

AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

AddEncoding позволяет вам заставить определенные браузеры (Mosaic/X 2.1+) распаковывать информацию "на лету". Внимание: это свойство поддерживают не все браузеры.

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

Формат: Redirect старый_URL   новый_URL

Alias /icons/ "/usr/local/apache/icons/"

Директива Alias дает возможность предоставлять доступ к документам, находящимся не только в каталоге, указанном в директиве DocumentRoot, и его подкаталогах, но и в других каталогах. По умолчанию в директиве Alias задан только один псевдоним — /icons, используемый директивами Addlcon и AddIconByType.Обратите внимание, что если вы включаете завершающий слэш в "псевдоним", то сервер потребует его присутствия и в URL.

ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
ScriptAlias /ismm25/  "/usr/home/ismm25/public_html/cgi-bin/"

ScriptAlias: Указывает каталог, который содержит серверные скрипты. Свойства ScriptAlias-ов такие же, как и у просто Alias-ов, кроме того, что документы в каталоге "действительное_имя" считаются приложениями и выполняются на сервере, а не отправляются клиенту. К директиве ScriptAlias применяются те  же правила в отношении завершающего "/", что и к Alias.Разрешается добавлять неограниченное число директив ScriptAlias. Добавьте по одной для каждого пользователя (из числа тех, которым вы доверяете), имеющего желание писать и выполнять собственные сценарии CGI (Например пользователь ismm25).

AddType text/html .shtml   ->  файлы с расширением .shtml должны обрабатываться как html файлы
AddType application/x-httpd-php .php -> файлы с расширением .php должны запускаться как php файлы
AddType application/x-httpd-php .html -> файлы с расширением .html должны запускаться и как php файлы
AddType application/x-httpd-cgi .pl -> файлы с расширением .pl должны запускаться как cgi файлы

AddType позволяет слегка подправить mime.types, не редактируя его, или объявить определенные файлы, имеющими определенный тип.

AddHandler server-parsed .shtml

Сервер Apache наделен возможностью модифицировать или производить синтаксический разбор файлов определенных типов перед отправкой их пользователю. Директива AddHandler ставит в соответствие расширению файла определенное действие. Некоторые из этих действий встроены в сервер, например, строка “AddHandler server-parsed shtml” ставит в соответствие всем файлам с расширением .shtml встроенную функцию сервера под названием “server-parsed”, которая производит синтаксический разбор файлов с целью найти серверные включения. Функция, указанная в директиве AddHandler, не обязательно должна являться встроенной функцией сервера. Директива Action может ставить в соответствие функции из AddHandler сценарий CGI. Например, следующие строки в файле srm.conf сначала указывают серверу, что функция fa поставлена в соответствие сценарию count.pl, который всякий раз запускается при обращении к файлам с расширением .aa

Action fa /ismm25/cgi-bin/count.pl
AddHandler fa .aa

ErrorDocument 500 "У Вас ошибка в скрипте!
ErrorDocument 404 "Такого документа на сервере нет!

Эта директива позволяет поставить в соответствие кодам ошибок HTTP-сервера текстовые сообщения и адреса URL на том же сервере. Этой возможностью можно пользоваться для замены и усовершенствования сообщений об ошибках, выдаваемых сервером.

access.conf: файл доступа к серверу

Предназначен для обеспечении защиты информации на вашем Web-узле. Access.conf предоставляет три варианта описания доступа: один для каталога cgi-bin, другой для каталога документов, а третий демонстрирует некоторые возможности управления доступом к различным каталогам. Сначала мы определяем свойства "по умолчанию" как весьма ограниченный набор разрешений.

<Directory />
    Options FollowSymLinks ExecCGI
    AllowOverride None
</Directory>

Обратите внимание, что с этого места и далее вы должны явным образом указывать свойства, которые могут быть разрешены, – так что если что-то не работает так, как вы ожидаете, сначала убедитесь, что вы разрешили это свойство ниже.
Здесь должен быть указан каталог, который вы установили как DocumentRoot.

<Directory "/usr/local/apache/htdocs">

Опции могут иметь значения "None", "All" или любую комбинацию из "Indexes", "Includes", "FollowSymLinks", "ExecCGI", или "MultiViews".

Options Indexes FollowSymLinks

Следующая директива перечисляет опции, которые могут быть переопределены в файлах .htaccess. Значением может быть "All", или любая комбинация из "Options", "FileInfo", "AuthConfig", и "Limit"

AllowOverride None      -> Блокирует использование файла .htaccess

Следующие директивы определяют, кто может получать что бы то ни было с этого сервера.

Order allow,deny
Allow from all
</Directory>

В последних версиях Apache файлы http.conf, smr.conf и access.conf объеденены в одном файле http.conf.

Файлы конфигурации доступа к каталогам.

Управлять доступом к подкаталогам можно с помощью файла access.conf. Однако бывает необходимо предоставить право частичного управления конфигурацией пользователям, не имеющим полномочия перезапускать сервер (например, владельцам начальных страниц). Для этих целей служит директива AccessFileName. По умолчанию параметр AccessFileName имеет значение .htaccess. Если необходимо изменить это значение, например на .acc , в файле srm.conf применяется директива

AccessFileName .acc

Директиву AccessFileName можно заблокировать с помощью следующих директив файла конфигурации access.conf

<Directory />
AllowOverride None
</Directory>

Предположим, что директивой AccessFileName выбран файл .htaccess. Ниже представлены аргументы директивы AllowOverride, управляющие директивами, включенными в файл .htaccess.
1. None. Сервер игнорирует файлы .htaccess в этом каталоге. Если вы не намерены использовать для каталога файлы .htaccess, вам следует явно установить эту опцию, поскольку это повысит производительность сервера.
2. Options. Разрешает использование директивы Options (см. ниже “Options”),
3. Filelnfo. Разрешает использование в файлах .htaccess директив AddТуре и AddEncoding.
4. AuthConfig. Разрешает использование директив AuthName, AuthType, AuthUserFile и AuthGroupFile, необходимых для защиты каталогов паролями.
5. Limit. Разрешает использование директив, ограничивающих доступ на основе имени или IP-адреса узла(allow, deny, order).
6. Indexes. Разрешает локальный контроль индексов каталогов в файлах .htaccess с помощью директив FancyIndexing, AddIcon.
7. All. Разрешает использование всех вышеперечисленных директив.

Директива Options

Директива Options позволяет управлять тем, какие функции сервера доступны для использования в каталоге, указанном в секции <Directory> или в файле .htaccess. В директиве Options можно использовать следующие аргументы:
1. None. В указанном каталоге не разрешается использование каких-либо функций.
2. All В указанном каталоге разрешается использование всех возможностей (принимается по умолчанию).
3. FollowSymLinks. Сервер следует символьным ссылкам, имеющимся в указанном каталоге.
4. SymLinksIfOwnerMatch. Сервер следует символьным ссылкам, только если каталог назначения
принадлежит тому же пользователю, что и сама ссылка.
5. ExecCGI. В указанном каталоге разрешается выполнение сценариев CGI.
6. Includes. В указанном каталоге разрешено использование серверных включений. Использование серверных включений требует, чтобы сервер производил синтаксический разбор всех HTML-файлов перед отправкой их клиентам. Это крайне нагружает сервер, поэтому мы бы порекомендовали отключить эту опцию.
7. Indexes. Сервер разрешает пользователям заказывать индексную страницу указанного каталога. Выключение этой опции запрещает передачу только списка файлов в каталоге, но не файла index.html.
8. IncludesNoExec. Эта директива разрешает использование в указанном каталоге серверных включений, но запрещает запуск из них внешних программ.

Контроль доступа по идентификационным данным клиентов.

Контроль доступа к серверу, отдельным его подкаталогам выполняется на основе имени, домена и IP-адреса компьютера клиента. Это достигается путем применения директив allow, deny, которые используются совместно с директивой order. Аргументами директив могут быть несколько имен узлов:

deny from gamma.tup.km.ua ikc1.tup.km.ua

В директиве order задается порядок, в котором сервер Apache рассматривает директивы deny и allow.Существуют три допустимых значения:
1. deny,allow. Сначала сервер рассматривает директиву deny, а затем — allow.
2. allow,deny. Сначала сервер рассматривает директиву allow, а затем — deny.
3. mutual-failure. Сервер отказывает в доступе всем компьютерам, явно не указанным в списке allow.
Запрещение доступа всем узлам кроме домена tup.km.ua выполняется следующим образом:

order deny, allow
allow from tup.km.ua
deny all

Для задания доступа всем узлам кроме домена podol.khmelnitskiy.ua следует использовать следующее:

order allow, deny
allow from all
deny from podol.khmelnitskiy.ua

Ниже доступ к ресурсам запрещен для узла ism.tup.km.ua , но разрешен для всех остальных узлов домена tup.km.ua:

order mutual-failure
allow from tup.km.ua
deny from ism.tup.km.ua

Следующий пример запрещает доступ в каталог /www/htdocs/private всем узлам, кроме тех, которые имеют в IP-адресе строку 204.62.129:

<Directory /www/htdocs/private>
Options Includes
AllowOverride None
<Limit GET POST>
order deny,allow
deny from all
allow from 204.62.129
</Limit>
</Directory>

Аутентификация пользователей

Если для доступа к ресурсу требуется ввод имени и пароля, то такой ресурс называется защищенным с помощью процедуры аутентификации. Имя и пароль хранятся в базе данных сервера.
Директива AuthName устанавливает соглашение об аутентификации для страниц, защищенных паролями. Под соглашением подразумевается набор сообщений, посылаемых клиенту для запроса на ввод имени и пароля.
Директива AuthType устанавливает тип аунтификации. В протоколе HTTP/1.0 только Basic.
В директиве AuthUserFile указывает файл, содержащий имена и пароли. Пароли шифруются с помощью функции crypt():

alex: D.aBXz13.5
mark: 21slfoUYG1

В директиве AuthGroup указывается файл, содержащий список групп и участников групп:

managers: alex mark
production: mark paul shelly

В директиве require указывается, какие условия должны выполняться для разрешения доступа. Ее аргументами могут быть список отдельных пользователей, список групп пользователей или разрешение на доступ всем пользователям из базы данных сервера.

require alex mark                        -> Для пользователей
require manager production               -> Для групп
require valid-user                       -> Всем пользователям из AuthUserFile

Например, разрешить доступ всем пользователям из AuthUserFile:

<Directory /www/htdocs/protected>
AuthName Protected
AuthType basic
AuthUserFile /usr/local/etc/conf/users
<Limit GET POST>
require valid-user
</Limit>
</Directory>

Для создания файла паролей применяется программа htpasswd, которую можно найти в каталоге /usr/local/apache/bin/. Например, новый файл паролей users для пользователя ismm25 создается при помощи следующей команды:

ismm25> /usr/local/apache/bin/htpasswd -c users ismm25
New password:
Re-type new password:
Adding password for users ismm25

Опция -с указывает программе htpasswd, что следует создать новый файл паролей. Если эта опция опущена, программа пытается отредактировать существующий файл паролей (добавить новую запись).

Задание к лабораторной работе №6

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

1. В каталоге указанной лабораторной работы создать файл users, в котором находятся три любых имени с паролями. При создании этого файла использовать программу htpasswd.
2. В этом же каталоге создать файл .htaccess, в котором разрешено всем пользователям в файле users получить доступ к страничке, причем доступ разрешить только с компьютера студента и с ip-адреса 195.230.134.97

Пример

HTML документ лабораторной работы №1 находится в каталоге /disk1/m/ismm25/public_html/lab1. В этом же каталоге размещен файл .htaccess:

AuthName Protected
AuthType basic
AuthUserFile /disk1/m/ismm25/public_html/users
<Limit GET POST>
order deny,allow
allow from 212.109.57.236 195.230.134.73 195.230.134.97
deny from all
require valid-user
</Limit>

Однако файл users находится в каталоге /disk1/m/ismm25/public_html :

al:iv195lHJAtk/k
al1:2hBAjRckpc/D6

с двумя пользователями al и al1. Доступ к страничке лабораторной работы №1 разрешен с компьютеров 212.109.57.236 195.230.134.73 195.230.134.97. Для просмотра нажми здесь