Apache: ограничение доступа с помощью htaccess и htpasswd

Автор: | 08/27/2012
 

В файле конфигурации Apache /usrlocal/etc/apache22httpd.conf проверяем наличие строки:

AccessFileName .htaccess

Ниже добавляем такой блок директив:

<Directory «/usr/local/www/users«>
AllowOverride All
</Directory>

Где /usr/local/www/users — путь к каталогу с файлами ваших сайтов.

Проверяем правильно файла конфигурации:

# httpd -t
Syntax OK

И перезагружаем Apache:

# apachectl restart

Создаем файл с паролями и добавляем в него пользователя setevoy:

# htpasswd -c /абсолютный-путь-к-файлу/.htpasswd setevoy
New password:
Re-type new password:
Adding password for user setevoy

# cat .htpasswd
setevoy:$apr1$:LKDsc$jkdsdcDCiudcSD98

Первое поле — логин пользователя, второе — хеш его пароля.

ВАЖНО: создавайте файл в директории, которая находится «выше» каталога с содержимым сайта/ов, что бы ограничить к нему доступ. Файл паролей не обязательно называть .htpasswd — можно дать любое имя. Желательно — сделать его «скрытым», .т.е добавить точку в начале имени файла.

Добавим ещё пользователя website:

# htpasswd .htpasswd website
New password:
Re-type new password:
Adding password for user website

Теперь в каталоге, который надо закрыть паролем, создаем файл .htaccess с таким содержимым:

AuthUserFile /абсолютный-путь-к-файлу/.htpasswd
AuthType Basic
AuthName «Password-protected Area»
Require valid-user

Что бы дать доступ к этом каталогу только определенному пользователю или нескольким пользователям, а не всем из файла .htpasswd — меняем строку Require, например — разрешим доступ только пользователям setevoy и website:

AuthUserFile /абсолютный-путь-к-файлу/.htpasswd
AuthType Basic
AuthName «Password-protected Area»
require user setevoy website

Удалить пользователя можно просто редактированием файла .htpasswd, удалив строку с его логином и хешем пароля.
Отредактировать пароль — так же, как создавался пользователь.

Что бы ограничить доступ только к определенному файлу file.txt — указываем такие строки:

<Files file.txt>
AuthUserFile /абсолютный-путь-к-файлу/.htpasswd
AuthType Basic
AuthName «Password-protected Area»
Require valid-user
</Files>