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

Автор: | 27/08/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>