Как поставить пароль на раздел (директорию, папку) сайта
Бывают случаи, когда нужно ограничить доступ пользователей к определенной папке на сайте (разделу сайта) и пускать туда посетителей только по паролю. Например, в раздел администратора. В этой статье я приведу инструкцию когда в качестве веб-сервера вы используете Apache.
Как настроить доступ по паролю
Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли. Во-вторых, необходимо указать веб-серверу, что доступ к этому разделу сайта (папка, директория) возможен только авторизованным пользователям.
Параметры файла .htaccess
Настройка доступа к папке по паролю в веб-сервере Apache производится в служебном файле .htaccess. Этот файл должен находиться в той папке для которой мы настраиваем ограничения. Иными словами, инструкции из файла .htaccess распространяются на ту папку, в которой этот файл расположен.
Чтобы доступ к необходимой нам папке был ограничен необходимо добавить в файл .htaccess следующие строки (если такого файла нет, то создайте его):
AuthType Basic AuthName "WellCome" AuthUserFile "/home/username/data/.htpasswd" Require valid-user
Где,
AuthName — это приветствие, которое увидят посетители, вы можете изменить его на свое,
AuthUserFile — полный путь к файлу паролей от корня диска, у вас должен быть свой (не путать с адресом запароленной директории).
Файл .htpasswd нужно размещать вне папок сайта, чтобы к нему не было доступа из интернета.
Формат файла .htpasswd
Файл состоит из строк, в каждой из которых содержатся пары логин и хеш пароля. Логин отделяется от хеша двоеточием. Пример содержимого файла:
Admin:$apr$Gg/NNV$2OIMrVrviCk User1:gbDwY2f5$GMrVrvW6qgbDwY
Как создать файл .htpasswd
Так как файл .htpasswd не содержит пароль в открытом виде, а лишь его хеш, то внести изменения в этот файл вручную с помощью обычного текстового редактора не получится. Нужно использовать специальную утилиту. В линукс системах для работы с файлом паролей используется утилита htpasswd, входящая в состав дистрибутива веб-сервера Apache. Я писал о ее использовании в этой статье.
Чтобы создать файл с паролями .htpasswd и добавить пользователя используйте команду:
# htpasswd -c /home/username/data/.htpasswd NewUser
Если файла .htpasswd уже существует, то исключите ключ -c:
# htpasswd /home/username/data/.htpasswd NewUser
Здесь:
/home/username/data/.htpasswd — это полный путь от корня диска к файлу с паролями, а
NewUser — имя пользователя.
При вводе команды вам будет предложено указать пароль, а затем подтвердить его, то есть ввести пароль нужно будет два раза.
С помощью этой утилиты, так же можно изменить уже присвоенный пользователю пароль, то есть изменить пароль для существующего пользователя.
Проверка работы .htpasswd
Если вы все сделали правильно, то при посещении запароленной папки (раздела на сайте), вы должны увидеть примерно следующее уведомление:
При вводе неправильных данных вы получите стандартное сообщение о 401-й ошибке (несанкционированный доступ, посетитель не авторизован), а при корректных данных — доступ к закрытому разделу сайта.
Благодарности
При написании статьи были использованы следующие источники: