Crmgo Блог

Використовуємо файли .htaccess і .htpasswd

Використовуємо файли .htaccess і .htpasswd

для встановлення пароля на доступ до певних сторінок або розділів вашого сайту. Для початку створюємо в потрібному підкаталозі файл .htaccess, до якого пишемо наступне: AuthType Basic AuthName "Access is Denied. Enter password" AuthUserFile /path_to_file/.passwords <Limit GET POST> Require valid-user…

Використовуємо файли .htaccess і .htpasswd

для встановлення пароля на доступ до певних сторінок або розділів вашого сайту.
Для початку створюємо в потрібному підкаталозі файл .htaccess, в який пишемо наступне:
AuthType Basic
AuthName "Access is Denied. Enter password"
AuthUserFile /path_to_file/.passwords
<Limit GET POST>
Require valid-user
</Limit>
Далі створюємо файл з паролями, шлях до якого вказується як параметр до директиви AuthUserFile.
Паролі в цьому файлі повинні бути зашифрованими, чого можна досягти за допомогою програми htpasswd, що входить до постачання Apache.

Детальну інформацію про використання можна почитати Manual Page: htpasswd або покурити man, так само достатньо запустивши htpasswd в unix shell:
$ htpasswd
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username passwordhtpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display results on stdout.
-m Force MD5 encryption of the password.
-d Force CRYPT encryption of the password (default).
-p Do not encrypt the password (plaintext).
-s Force SHA encryption of the password.
-b Use the password from the command line rather than prompting for it.
.....

Отже, у нас ще немає файлу з паролями і нам потрібно його створити :
$ htpasswd -c .passwords test
New password:
Re-type new password:
Adding password for user test

Після цього створиться файл .passwords, в якому виявиться користувач test та його пароль у зашифрованому вигляді:
$ cat .passwords
test:WE.MwmyNsIG76

А тепер ми хочемо додати ще одного користувача. Оскільки файл з паролями у нас вже є, ми просто не будемо використовувати ключ ‘-c’ :
$ htpasswd .passwords test1
New password:
Re-type new password:
Adding password for user test1
$ cat .passwords
test:WE.MwmyNsIG76
test1:Eeg7zFPfq32BM

Як параметр до директиви require ми вказали valid-user. Це означає, що будь-який користувач, який є у використовуваному файлі з паролями, може мати доступ до захищеного ресурсу. Однак, погодьтеся, зручно мати всі паролі в одному файлі, а права на конкретні ресурси давати тільки певним користувачам.
Для цього покажемо на прикладі, даємо доступ тільки користувачу test:

AuthType Basic
AuthName "Access is Denied. Enter password"
AuthUserFile /path_to_file/.passwords
<Limit GET POST>
Require user test
</Limit>

Ще можна об'єднати користувачів у групи і давати доступ не конкретним юзерам, а групам.
Це можна зробити за допомогою директиви AuthGroupFile:

AuthGroupFile /path_to_file/groups

У файлі groups створюємо групи приблизно так :
group1: user1 user3
group2: user2 user4
group3: user1 user3
Відповідно, директиву require будемо використовувати так :

AuthType Basic
AuthName "Access is Denied. Enter password"
AuthGroupFile /path_to_file/groups
AuthUserFile /path_to_file/.passwords
<Limit GET POST>
Require user test
Require group group1
</Limit>

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.