htaccess и htpasswd защита содержимого сайта


Если хотим зашифровать наш каталог для внешней сети, поставив на него пароль или дать доступ только некоторым лицам доступ к нему, ну или группе лиц. То эта статья для вас.

Для начала необходимо создать файл .htpasswd где будут храниться наши пароли, с указанием пути и имени пользователя (к примеру admin):

htpasswd -cm /usr/local/apache2/htdocs/host1/.htpasswd admin

Если такой файл уже существует, то добаляем в него нового пользователя:

htpasswd -nm /usr/local/apache2/htdocs/host1/.htpasswd username

И в том и в другом случае используется для шифрования MD5 хэш. Так же в файл .httpasswd можно дописать имя без пароля:

user:

который будет работать, а вот дописать ему незашифрованный пароль не получится, наш сервер не даст к нему доступ

После того как создали .httpasswd, создаем в той же директории .htaccess и добавляем в него следующие строки:

AuthType Basic
AuthName "Private Zone"
AuthUserFile /usr/local/apache2/htdocs/host1/.htpasswd
require valid-user

valid-user говорит, о том что доступ могут получить все кто прописан в файле .htpasswd, а вот если необходимо дать доступ только отдельным лицам, то:

require admin username

Если необходимо дать доступ группе лиц, то создаем файл .group который будет содержать имена пользователей и к какой группе они относятся:

admins: admin
users: user

И теперь в .htaccess прописываем:

AuthType Basic
AuthName "Private Zone"
AuthUserFile /usr/local/apache2/htdocs/host1/.htpasswd
AuthGroupFile /usr/local/apache2/htdocs/host1/.group
require group admins


   deny from all

Где говорим откуда будут браться пароли для пользователей и к какой группе относятся пользователей, также указавается какой группе разрешается доступ. Плюс ко всему этому сразу запрещаем доступ к файлу .group чтобы не был доступен извне.

comments powered by Disqus