Как поставить доступ по паролю к папке при помощи htaccess ?

Статус
В этой теме нельзя размещать новые ответы.

rit

Постоялец
Регистрация
5 Дек 2006
Сообщения
567
Реакции
128
Как поставить доступ по паролю к папке, например папка admin при помощи htaccess ?
 
Для этого надовоспользоваться системой базовой авторизации на Apache. Создаешь в каталоге, к которому надо ограничить доступ по паролю, файл .htaccess с такими параметрами:

AuthType Basic
AuthName "Some Name"
AuthUserFile /www/some_login/www/.../some_dir/.htpasswd
require valid-user

где /www/some_login/www/.../some_dir/.htpasswd - это полный путь к файлу паролей на сервере

В директиве AuthUserFile указываем абсолютный путь к файлу с логинами/паролями.
Далее создается файл паролей. Он содержитт строки вида login:password.
Пароль надо зашифровать с использованием алгоритма MD5. С этим вполне справится программа уже установленная на Apache - htpasswd (как правило она находится тут: /usr/local/apache/bin, полный путь - /usr/local/apache/bin/htpasswd).

Можно создать файл паролей в unix shell прямо на сервере. Зайдем в shell и будем выполнять следующие команды:

htpasswd -mbc .htpasswd user1 ПАРОЛЬ - создаем новый файл .htpasswd, в который добавляем запись для пользователя user1 с паролем, указанным в командной строке.
htpasswd .htpasswd user2 - добавляем в уже существующий файл .htpasswd пользователя user2, а пароль вводим вручную в ответ на соответствующий запрос программы.

После окончания заведения всех логинов файл нужно загрузить на сервер.

И самое главное: .htaccess должен передаваться по FTP строго в текстовом (ASCII) режиме!


на висте не работает

программа есть на Апаче
 
Если на сервере установлена какая-либо панель, можно оттуда защитить. Могу предложить вариант создания нужного хтаксесса на PHP:

PHP:
$fs=fopen("./".folder."/.htaccess", "w");
$protect="AuthName \"Member zone\" \n
AuthType Basic \n
AuthUserFile /home/user/public_html/".$folder."/.htpasswd \n
require valid-user";
fwrite($fs, $protect);
fclose($fs);

$fs=fopen("./".$folder."/.htpasswd", "w");
$protect=$login.":".crypt($password);
fwrite($fs, $protect);
fclose($fs);
 
Вариант предыдущего поста с выводом на экран.
Позволяет установить сразу несколько паролей и не надо париться с абсолютным путём.
PHP:
$logpass = Array('admin'=>'12345','demo'=>'demo'); // пары логин-пароль, вторую пару можно удалить
$path = $_SERVER['DOCUMENT_ROOT'].'/admin'; // путь до запароливаемой директории
 
$ht = fopen('./.htaccess','w');
fwrite($ht,"AuthName \"Site Admin Entry\"\nAuthType Basic\nAuthUserFile $path/.htpasswd\nRequire valid-user");
fclose($ht);
 
$ht = fopen('./.htpasswd','w');
$salt = 'xW'; // соль - любые две латинские буквы и/или цифры
echo '<pre>';
foreach ($logpass as $log=>$pass){
  $str = $log.':'.crypt($pass,$salt)."\n";
  echo $str; fwrite($ht,$str);
}
fclose($ht);
echo '</pre>';
 
ещё здесь _http://www.htaccess.ru/wiki/PasswordProtection?v=jte можно почитать
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху