🐹 Apache: Как поставить пароль на раздел или каталог сайта. Утилита htaccess.

Содержание:

1. Для чего это нужно?
2. Как настроить доступ по паролю.
3. Параметры файла .htaccess.
4. Формат файла .htpasswd.
5. Как создать файл .htpasswd.
6. Проверка работы .htpasswd.
7. Оригиналы источников информации.


1. Для чего это нужно.

Бывают случаи, когда нужно ограничить доступ пользователей, к определенному каталогу на сайте или разделу сайта, и пускать туда посетителей только по паролю. Например, в раздел администратора. В этой статье я приведу инструкцию когда в качестве web-сервера вы используете Apache.

2. Как настроить доступ по паролю.

Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли. Во-вторых, необходимо указать web-серверу, что доступ к этому разделу сайта возможен только авторизованным пользователям.

3. Параметры файла .htaccess.

Настройка доступа к каталогу по паролю в web-сервере Apache производится в служебном файле .htaccess. Иными словами, инструкции из файла .htaccess распространяются на тот каталог, в котором этот файл расположен.

Чтобы доступ к необходимому нам каталогу был ограничен необходимо добавить в конфигурационный файл Apache, который ‘имя_сервиса.conf‘ он и активирует место расположения файла .htaccess. Добавляем следующие строки (если такого файла нет ‘имя_сервиса.conf‘ , то создайте его в месте хранения конфигураций Apache).

Добавляемый фрагмент в файл конфигурации:

AuthType Basic
AuthName "WellCome"
 AuthUserFile "/home/username/data/.htpasswd" 
Require valid-user

где:

  • AuthName — это приветствие, которое увидят посетители, вы можете изменить его на свое,
  • AuthUserFile — полный путь к файлу паролей от корня диска, у вас должен быть свой (не путать с адресом запароленного каталога).

Файл .htpasswd нужно размещать вне каталогов сайта, чтобы к нему не было доступа из интернета.

Чтобы авторизация заработала, необходимо в файле /etc/httpd/conf.d/phpMyAdmin.conf в разделе Directory добавить параметр AllowOverride, чтобы получилось вот так:

<Directory /путь_до_каталога/>
AddDefaultCharset UTF-8
Require all granted
AllowOverride All
</Directory>

После модификации файла конфигурации перезапустите Apache:

# systemctl restart httpd

4. Формат файла .htpasswd.

Файл состоит из строк, в каждой из которых содержатся пары логин и хеш пароля. Логин отделяется от хеша двоеточием.

Пример содержимого файла:

Admin:$apr$Gg/NNV$2OIMrVrviCk
User1:gbDwY2f5$GMrVrvW6qgbDwY

5. Как создать файл .htpasswd.

Так как файл .htpasswd не содержит пароль в открытом виде, а лишь его хеш, то внести изменения в этот файл вручную с помощью обычного текстового редактора не получится. Нужно использовать специальную утилиту. В Linux системах для работы с файлом паролей используется утилита htpasswd, входящая в состав дистрибутива web-сервера Apache.

Чтобы создать файл с паролями .htpasswd и добавить пользователя используйте команду:

# htpasswd -c /home/username/data/.htpasswd NewUser

Если файла .htpasswd уже существует, то исключите ключ -c:

# htpasswd /home/username/data/.htpasswd NewUser

Здесь:

/home/username/data/.htpasswd

.htpasswd — это полный путь от корня диска к файлу с паролями, а NewUser — имя пользователя.

При вводе команды вам будет предложено указать пароль, а затем подтвердить его, то есть ввести пароль нужно будет два раза.

С помощью этой утилиты, так же можно изменить уже присвоенный пользователю пароль, то есть изменить пароль для существующего пользователя.

После создания файла .htpasswd с паролями накидываем права на этот файл:

# chown -R apache:apache/home/username/data/.htpasswd
# chmod -R 755 /home/username/data/.htpasswd

Если этого не сделать, то будет высказать ошибка доступа к разделу «HTTP 500 Internal Server Error».

6. Проверка работы .htpasswd.

Если вы все сделали правильно, то при посещении запароленного каталога (раздела на сайте), вы должны увидеть примерно следующее уведомление:

При вводе неправильных данных вы получите стандартное сообщение о 401-й ошибке (несанкционированный доступ, посетитель не авторизован), а при корректных данных — доступ к закрытому разделу сайта.

7. Оригиналы источников информации.

  1. moonback.ru «Как поставить пароль на раздел (директорию, папку) сайта».
  2. s-engineer.ru «Как запаролить директорию в Apache».
  3. ru.wikipedia.org «Материал из Википедии — .htpasswd».

Читайте также: