В файле конфигурации Apache /etc/httpd/conf/httpd.conf проверяем наличие строки:
1 |
AccessFileName .htaccess |
Ниже добавляем такой блок директив:
1 2 3 |
<Directory /var/www/any_vhost> AllowOverride All </Directory> |
Где /var/www/any_vhost – путь к каталогу с файлами ваших сайтов.
Проверяем правильно файла конфигурации:
1 2 |
# httpd -t Syntax OK |
И перезагружаем Apache:
1 |
service httpd restart |
Создаем файл с паролями и добавляем в него пользователя test:
1 2 3 4 |
# htpasswd -c /etc/httpd/.htpasswd test New password: Re-type new password: Adding password for user test |
# cat /etc/httpd/.htpasswd
test:$apr1$:LKDsc$jkdsdcDCiudcSD98
Первое поле – логин пользователя, второе – хеш его пароля.
ВАЖНО: создавайте файл в директории, которая находится “выше” каталога с содержимым сайта/ов, что бы ограничить к нему доступ. Файл паролей не обязательно называть .htpasswd – можно дать любое имя. Желательно – сделать его “скрытым”, .т.е добавить точку в начале имени файла.
Теперь в каталоге, который надо закрыть паролем, создаем файл .htaccess с таким содержимым:
1 2 3 4 |
AuthUserFile /etc/httpd/.htpasswd AuthType Basic AuthName "Password-protected Area" Require valid-user |
Что бы дать доступ к этом каталогу только определенному пользователю или нескольким пользователям, а не всем из файла .htpasswd – меняем строку Require, например – разрешим доступ только пользователям test и website:
1 2 3 4 |
AuthUserFile /etc/httpd/.htpasswd AuthType Basic AuthName "Password-protected Area" require user test website |
Удалить пользователя можно просто редактированием файла .htpasswd, удалив строку с его логином и хешем пароля.
Отредактировать пароль – так же, как создавался пользователь.
Что бы ограничить доступ только к определенному файлу file.txt – указываем такие строки:
1 2 3 4 5 6 |
<Files file.txt> AuthUserFile /etc/httpd/.htpasswd AuthType Basic AuthName "Password-protected Area" Require valid-user </Files> |
Для apache 2.4 если необхоимо исключить localhost
1 2 3 4 5 6 7 8 |
<If "%{REMOTE_ADDR} != '127.0.0.1'"> AuthType Basic AuthName "restricted area" AuthUserFile /etc/httpd/.htpasswd require valid-user Allow from 127.0.0.1, 192.168.1.25 Satisfy Any </If> |