Пароль на нужную директорию можно задать путём добавления в файл /etc/httpd/conf/httpd.conf следующих строчек:
Directory "/var/www/mrtg
AuthType Basic
AuthName "WHO ARE YOU?"
AuthUserFile /var/www/main.pwd
Require valid-user
/Directory
Где:
«/var/www/mrtg» – директория на которую надо задать пароль.
AuthName «WHO ARE YOU?» – вопрос который будет задаваться пользователю при аутенфикации
AuthUserFile /var/www/main.pwd файл в котором хранятся пароли.
Так же пароль можно задать при помощи .htaccess можно использовать и для установки пароля на доступ к определенным страницам или разделам вашего сайта. Делается это путем создания в нужном подкаталоге файла .htaccess, в который пишется следующее:
AuthType Basic
AuthName «this is a test of protected realm»
AuthUserFile /path/to/file/with/passwords
<Limit GET POST>
require valid-user
</Limit>
Кроме того, нужно создать файл с паролями, путь к которому указывается в качестве параметра к директиве AuthUserFile. Пароли в этом файле должны быть шифрованными, чего можно достигнуть с помощью программы htpasswd, входящей в поставку Apache. Пользователи Windows могут скачать этот файл: htpaswd.zip. Однако, допустим, htpasswd у нас доступен:
htpasswd
Usage:
htpasswd [-cmdps] passwordfile username
htpasswd -b[cmdps] passwordfile username password
-c Create a new file.
Здесь не будут рассматриваться все параметры этой команды, но вы можете сами прочитать подробности, запустив htpasswd в unix shell или ознакомившись с соответствующей страницей документации по Apache.
Итак, изначально у нас еще нет файла с паролями и нам нужно его создать :
htpasswd -c passwords test1
New password:
Re-type new password:
Adding password for user test1
После выполнения данной операции htpasswd создаст файл passwords, в котором окажется пользователь test1 и его пароль в зашифрованном виде:
cat passwords
test1:zgco1KREjBY8M
А теперь мы хотим добавить еще одного пользователя. Так как файл с паролями у нас уже есть, мы просто не будем использовать ключ ‘-c’ :
htpasswd passwords test2
New password:
Re-type new password:
Adding password for user test2
cat passwords
test1:zgco1KREjBY8M
test2:eN3uA6t0kzV1c
Сейчас попробуйте обратиться к тому каталогу, в котором мы размещали .htaccess – браузер спросит у вас пароль, чего мы и добивались. Пока не будет введен правильный логин и пароль, посетитель не увидит соответствующей страницы.
В качестве параметра к директиве require мы указали valid-user. Это означает, что любой пользователь, который есть в используемом файле с паролями, может иметь доступ к защищенному ресурсу. Однако, согласитесь, удобно иметь все пароли в одном файле, а права на конкретные ресурсы давать только определенным пользователям. Это тоже реализуемо. Например, мы хотим дать доступ только пользователю test2. Делаем так :
require user test2
Еще можно объединить пользователей в группы и давать доступ не конкретным логинам, а группам. Это можно сделать с помощью директивы AuthGroupFile:
AuthGroupFile /path/to/file/with/groups
В файле /path/to/file/with/groups создаем группы примерно так :
group1: test1 test5
group2: test2 test4
group3: test1 test3
Соответственно, директиву require будем использовать так :
require group group3
Механизмы ограничения доступа, которые реализованы в Apache, позволяют очень гибко управлять правами для пользователей и групп, что является очень важной возможностью. Если углубиться в изучение предмета, Вы сможете узнать и то, что логины и пароли, используемые для авторизации, можно хранить не только в файлах, но и в простейших базах данных формата BerkeleyDB — почитайте документацию по директиве AuthDBGroupFile. Также для хранения данных авторизации можно использовать практически любую СУБД (MySQL или PostgreSQL), но это уже выходит за рамки данного пункта.
Для тех, кто скачал htpaswd.zip: чтобы поставить пароль на какую-либо папку выполните (в принципе, об этом было рассказано выше, но, как говорится, повторение – мать его;)) следующее:
Создайте файл .htaccess в папке, которую нужно прикрыть паролем примерно такого содержания:
AuthType Basic
AuthName «Введите логин и пароль»
# Путь к файлу с паролями .htpasswd
AuthUserFile Путь/.htpasswd
require valid-user
Теперь, собственно, о создании файла .htpasswd: распакованный htpaswd.exe кидаем в удобную директорию (лучше в корень диска) и лезем в Start (Пуск) > Run (Выполнить) > command. Затем переходим в нашу директорию и набиваем:
D:\htpasswd -c -m -b .htpasswd admin pass, где admin – ваш логин, pass – пароль.
Нажмите «Enter». Теперь на диске D:\ должен появится файл .htpasswd. Переместите его в ту папку, путь до которой указали в файле .htaccess (Путь/.htpasswd). Все! Ваша папка прикрыта паролем!
В статье частично использовались материалы с сайта http://eyewink.fatal.ru/