Речь в статье пойдет о том, как
не меняя основной файл конфигурации
Apache и не перезапуская ваш веб-сервер,
изменить права доступа определенного
пользователя к каталогу или файлу на
вашем веб - сервере.
Дело в том что конфигурационный
файл Apache httpd.conf обладает возможностью "масштабирования".
То есть вы можете размещать отдельные
директивы этого файла в других файлах,
расположенных в директориях вашего
веб-сайта. При этом нет необходимости
перезапускать веб сервер каждый раз
когда изменяться эти файлы -так как веб
сервер автоматически их ищет и
исполняет в каждом каталоге , к которому
хочет получить доступ пользователя.
Для того чтобы использовать
возможности такого "масштабирования"
следует сообщить серверу что мы
собираемся использовать такую
возможность и задать имена файлов в
которых будет находиться служебная
информация. Кроме того необходимо
разместить в каталогах файлы с
командами серверу дать или запретить
доступ к конкретным файлам или
директориям внутри текущей директории.
Для того чтобы включить в
корневом каталоге сервера возможность
использования файлов доступа следует
задать это в директиве <Directory> для
корневого каталога веб сервера,
следующим образом:
# Корневой каталог для веб-сервера
. Внутри этого каталога вы
размещаете ваши файлы
DocumentRoot "f:/intranet/root"
#Задаються правила для корневого
каталога сервера. Эти правила
распространяются по-умолчанию на
все вложенные директории и файлы.
<Directory />
Options FollowSymLinks ExecCGI
#Следующая директива разрешает
использование конфигурационных
файлов в корневой и всех вложенных
директориях веб-сервера если только
для вложенных директорий не указаны
отдельные директивы например <Directory
F:/intranet/root/tmp> ... </directory>
AllowOverride All
</Directory>
# Указываем права доступа и
параметры для доступа к корневому
каталогу (см. директиву DocumentRoot )
веб-сервера
<Directory "f:/intranet/root">
Options Indexes FollowSymLinks MultiViews
# Разрешаем использование
конфигурационных файлов.
AllowOverride All
Order allow,deny
Allow from all
</Directory>
|
Для того чтобы определить в
каких именно файлах будут находиться
конфигурационная информация следует
добавить в конфигурационных файл
следующую директиву (если ее еще там нет)
которая задает какие файлы использовать
в качестве конфигурационных:
# Если файл с таким именем
находиться в текущей директории то
# при наличии для директории
действующего правила "AllowOverride All"
следует использовать правила
указанные
# в этом файле.
AccessFileName .htaccess
|
Кроме того в основном
конфигурационном фалу Apache полезно
указать что данный файл не доступен для
любого браузера, это делается следующим
образом:
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>1
|
После того как вы сделали
следующие изменения в конфигурационном
файле httpd.conf следует перезапустить веб-сервер.
Для того чтобы запретить доступ любому
пользователю к подкаталогу имя которого
начинаеться с подстрочного
подчеркивания , достаточно
создать файл ".htaccess" со
следующим содержимым:
<Files _* >
Order allow,deny
Deny from all
</Files>
|
и разместить его в корневом
каталоге веб сервера. После того как
такой файл размещен или изменен -
перезапускать веб-сервер не нужно.
Информация из файла конфигурации
читается веб сервером налету. Если же вы
желаете выборочно разрешить доступ
определенным пользователям к каталогу
то создайте в нем следующий .htaccess файл:
<Files _* >
Order deny,allow
Deny from all
# Пользователи со следующими ip-адресами
имеют доступ к файлам (или
директориям) имена которых
# начинаються с подстрочного
подчеркивания. Остальные не
имеют.
Allow from 127.0.0.1
Allow from 192.168.1.1
Allow from 192.168.1.2
Allow from 192.168.1.3
</Files>
|
|
Более подробно про директивы
управления веб сервером можно посчитать
в документации по веб-серверу Apache на http://www.apache.org/
- официальном сайте веб - сервера Apache.
Кроме того рекомендуем
посетить раздел "ИНТРАNET"
сайта "Программы
для бизнеса" там вы найдете статьи
посвященные применению интранет
технологий в вашем бизнесе.
01.06.2001 - С уважением Arsen
Kirillov. |