Использование .htpasswd

Как ограничить доступ к каталогам сайта
Самый простой способ это сделать — использовать встроенную авторизацию веб-сервера 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>

Комментарии (3)

n2011all 2013-12-27 18:16:54
Начиная с версии Apache 2.3 указанные выше конструкции УСТАРЕЛИ и нуждаются в обновлении в соответствии с новыми изменениями. Это хорошо показано на примере конфига для приложения cacti:

Alias /cacti /usr/share/cacti/site

<Directory /usr/share/cacti/site>
Options +FollowSymLinks
AllowOverride None
<IfVersion >= 2.3>
Require all granted
</IfVersion>
<IfVersion < 2.3>
Order Allow,Deny
Allow from all
</IfVersion>

AddType application/x-httpd-php .php

<IfModule mod_php5.c>
php_flag magic_quotes_gpc Off
php_flag short_open_tag On
php_flag register_globals Off
php_flag register_argc_argv On
php_flag track_vars On
# this setting is necessary for some locales
php_value mbstring.func_overload 0
php_value include_path .
</IfModule>

DirectoryIndex index.php
</Directory>
4enki 2012-05-05 20:38:22
@Admirus:, отнюдь.
.htpasswd и .htaccess поддерживаются любыми адекватными хостерами. если же нет, то врядли это «хостинг».
Admirus 2010-12-20 13:31:38
Хорошая информация. Только не все хостинги поддерживают
Меню