Как ограничить доступ к каталогам сайта
Самый простой способ это
сделать - использовать встроенную авторизацию веб-сервера Apache. Для этого
используется файл .htaccess c соответствующими
директивами для Apache. В
самом простом случае директивы должны быть такими:
AuthUserFile /полный_путь_к_файлу/.htpasswd
AuthGroupFile
/dev/null
AuthName подсказка
AuthType Basic
require
valid-user
Директива AuthUserFile задает путь к файлу, содержащему имена и пароли
пользователей. Он может иметь практически любое имя и располагаться в любом
каталоге,
главное - чтобы веб-сервер мог его прочитать, что требует
установки соответствующих прав доступа к этому файлу (на нашем сервере - 644).
Однако традиционно
такие файлы называют .htpasswd
При таком наборе
директив доступ к каталогу получат все пользователи, перечисленные в
.htpasswd. Чтобы дать доступ только некоторым из них, вместо require
valid-user нужно в .htaccess записать директиву require user
список_имен_пользователей
где список_имен_пользователей имеет вид:
имя_пользователя1 имя_пользователя2 имя_пользователя3...
Как создать
файл .htpasswd
Хотя .htpasswd - это обычный текстовой файл, для работы с
ним есть специальная утилита - ее вариант для Unix называется
htpasswd
Команда htpasswd -c .htpasswd имя_пользователя
создаст новый
файл .htpasswd, запросит пароль для пользователя и создаст запись о
пользователе с указанными именем и паролем в этом файле.
Как добавить или изменить запись о пользователе в .htpasswd
Команда
htpasswd имя_файла имя_пользователя
запросит пароль для пользователя и
создаст запись о пользователе с указанными именем и паролем в указаном файле
или изменит пароль пользователя в уже
существующей записи.
Как
удалить запись о пользователе из .htpasswd
Для этого достаточно открыть
.htpasswd обычным текстовым редактором, найти и удалить строчку, начинающуюся
с имя_пользователя:
Подскажите, пожалуйста, как я могу создать работающий файл .htpasswd ?
Вроде бы ясно, что пароли, соответствующие логинам, хранятся в этих файлах
в закриптованной форме.
Пробовал разные утилитки для Win, которые
криптуют пароли по казалось бы подходящей схеме. Но на практике пароли не
распознаются.
Чем в Windows создавать файлы .htpasswd, чтобы они работали?
Создавать
эти файлы лучше через скрипт.
1. Создать файл паролей, выполнив из скрипта команду
/usr/local/apache/bin/htpasswd -c -b passwordfile username password
где passwordfile это, например, /home/mydomainru/.htpasswd
usernanme и
password соответственно имя пользователя и пароль
2. В директории, которую Вы паролируете, создать файл .htaccess
AuthType Basic
AuthName "Security system"
AuthUserFile
/home/mydomainru/.htpasswd
<Limit GET POST>
require valid-user
</Limit>