Ограничение доступа к директориям

Если Вам необходимо ограничить доступ в какую-либо директорию на вашем сайте, то есть несколько путей для решения этой задачи:

1. Запаролировать директорию самим из панели управления Вашим аккаунтом.

2. Определиться с количеством пользователей, которые будут иметь доступ в данную папку и написать об этом в службу технической поддержки.

3. Для того, чтобы закрыть директорию паролем нужно воспользоваться встроенной авторизацией веб–сервера Apache.

Для этого используется файл .htaccess c соответствующими директивами для Apache.

В самом простом случае директивы должны быть такими:

AuthName "Authentication required"
AuthType Basic
require valid-user
AuthUserFile /home/host1000/www/test/.htpasswd

Директива AuthUserFile задает путь к файлу, содержащему имена и пароли пользователей. Он может иметь практически любое имя и располагаться в любом каталоге, главное, чтобы веб–сервер мог его прочитать, что требует установки соответствующих прав доступа к этому файлу (на нашем сервере — 600). Традиционно такие файлы называют ".htpasswd". Обычно такие файлы хранят в директории, к которой невозможно обратиться из браузера, то есть выше папки "/www/". Название файла начинается с символа "." (точка) не случайно. Все файлы, которые начинаются со словосочетания ".ht" запрещены веб-сервером к прочтению по протоколу http.

При таком наборе директив доступ к каталогу получат все пользователи, перечисленные в .htpasswd. Чтобы дать доступ только некоторым из них, вместо:

require valid–user

нужно в .htaccess записать директиву:

require user name_of_user_1 name_of_user_2 name_of_user_3 

Как создать файл .htpasswd?

Хотя .htpasswd — это обычный текстовой файл, для работы с ним есть специальная утилита. Ее вариант для Unix называется "htpasswd":

/usr/local/apache/bin/htpasswd -bc /path_to_file/.htpasswd username password

Данная команда, введенная в командной строке сервера, создаст новый файл .htpasswd и сделает запись о пользователе с указанными именем и паролем в этом файле.

Как добавить или изменить запись о пользователе в файле .htpasswd?

/usr/local/apache/bin/htpasswd -b /path_to_file/.htpasswd username password_word

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

Как удалить запись о пользователе из .htpasswd?

Для этого достаточно открыть .htpasswd обычным текстовым редактором, найти и удалить строчку, начинающуюся с "имя_пользователя:".

Если Ваш тарифный план не предусматривает SSH (доступ к командной строке сервера), или Вы просто с этим не достаточно знакомы, то для создания файла .htpasswd Вы можете использовать несколько методов:

1. Воспользоваться любой программой поддерживающей шифрацию crypt, сгенерировать с помощью ее пароль и создать на локальном диске файл (например с именем .htpasswd ) и записать в него следующую информацию:

username:crypted_password

После этого полученный файл необходимо закачать по FTP протоколу в нужную директорию на нашем сервере.

2. Cоздать файл .htpasswd можно при помощи PHP или Perl (или любого другого серверного языка программирования), используя системные вызовы в PHP:

exec("/usr/local/apache/bin/htpasswd -b /home/host1000/www/test/.htpasswd username password_word", $system_answer)

в Perl:

exec("/usr/local/apache/bin/htpasswd -b /home/host1000/www/test/.htpasswd username password_word")
my $system_answer = 
`/usr/local/apache/bin/htpasswd -b /path_to_file/.htpasswd username password`;

Обратите внимание что используются обратные кавычки " ` ";