
1.4Права доступа к файлам и каталогам.
Из соображений безопасности нам необходимо для любого файла или каталога, используемого для хранения страничек или CGI-программ, установить определенный набор прав. Но вначале рассмотрим, каким же образом нам задать папку или файл(ы), которым мы присваиваем права. Делается это при помощи одной из следующих конструкций:
Для каталога:
<Directory directory>
Здесь перечисляются все директивы, управляющие доступом и опциями каталога
</Directory>
Для файла(ов):
<Files filename>
Здесь перечисляются все директивы, управляющие доступом к файлу(ам)
</Files>
Вместо directory и filename подставляются нужные значения. Возможно использование регулярных выражений, что позволяет задавать права для целой группы файлов и/или каталогов.
Права, определенные для каталога, распространяются и на все подкаталоги, входящие в него, если только для какого-нибудь из подкаталогов права не были переопределены. Сейчас мы рассматриваем способ определения прав в основном конфигурационном файле, но для тех же целей можно использовать файлы (секции ) виртуальных хостов и локальные файлы .htaccess, которые размещаются в той папке, для которой требуется ограничить доступ. В ряде случаев это гораздо удобнее. Синтаксис написания команд в файле .htaccess полностью аналогичен синтаксису команд в файле httpd.conf.
Важно отметить, что конфигурирование поведения web-сервера при помощи .htaccess возможно только в случае, если это разрешено в правах вышестоящего каталога (см AllowOverride). Основные директивы, используемые для определения прав:
Options option_list - директива, определяющая дополнительные опции для конкретного каталога. Опции отделяются друг от друга пробелами. Основные из них следующие:
None - дополнительные опции для данного каталога не определены
All - определены все возможные опции, за исключением MultiViews
Indexes - опция, позволяющая использовать файлы по умолчанию - при неполном наборе адреса. Список файлов по умолчанию задаются директивой DirectoryIndex, которая была описана в этой статье несколько выше. При отсутствии в данном каталоге файла по умолчанию Apache выдаст броузеру содержимое каталога.
Includes - опция, относящаяся к функционированию SSI и разрешающая использовать директиву Include. Для полноценного функционирования SSI опция должна быть включена.
IncludesNOEXEC - опция, подобная предыдущей, но запрещающая использовать во включениях SSI-команды запуска CGI-скрипта <!--#exec script.pl --> и <!--#include script.pl -->
ExecCGI - опция, разрешающая в данном каталоге запуск CGI-программ.
FollowSymLinks - опция, позволяющая Apache переходить по символьным ссылкам в системах Unix. То есть страничка может находиться вне основного дерева, определенного для хранения html-документов.
AllowOverride - директива, разрешающая переопределять параметры доступа для нижележащих каталогов. После данной команды должен быть указан список директив, разрешенных к переопределению. Например, AllowOverride All - разрешает переопределение любых прав, AllowOverride Options - разрешает переопределение опций для каталога, AllowOverride None - запрещает переопределение прав.
Order allow, deny - порядок наложения прав доступа к файлу или каталогу с определенных IP-адресов или доменных имен. Может использоваться маска для отсеивания целых сегментов сети. В данном случае вначале определяются сайты, доступ к которым разрешен, а потом те, к которым запрещен. В случае команды Order deny, allow - все наоборот.
Allow from - список IP-адресов или доменных имен, доступ с которых разрешен. Может быть использована маска - для разрешения доступа к сайту целой группе доменов. Например, Allow from .com - разрешает доступ со всех доменов, имеющих окончание .com. Allow from all - разрешает доступ к сайту из любой точки интернета.
Deny from - список IP-адресов или доменных имен, доступ с которых запрещен. Так же, как и в предыдущем случае, может быть указана группа доменов или маска IP-адресов.