Если хотим зашифровать наш каталог для внешней сети, поставив на него пароль или дать доступ только некоторым лицам доступ к нему, ну или группе лиц. То эта статья для вас.
Для начала необходимо создать файл .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 чтобы не был доступен извне.