Crmgo Blog

Korzystanie z plików .htaccess i .htpasswd

Korzystanie z plików .htaccess i .htpasswd

do ustawienia hasła dostępu do określonych stron lub sekcji Twojej witryny. Na początek tworzymy w odpowiednim podkatalogu plik .htaccess, do którego wpisujemy następujące dane: AuthType Basic AuthName "Dostęp zabroniony. Wprowadź hasło" AuthUserFile /ścieżka_do_pliku/.passwords <Limit GET POST> Require valid-user…

Korzystanie z plików .htaccess i .htpasswd

do ustawienia hasła dostępu do określonych stron lub sekcji Twojej strony internetowej.
Na początek tworzymy w odpowiednim podkatalogu plik .htaccess, w którym wpisujemy następujące dane:
AuthType Basic
AuthName "Access is Denied. Enter password"
AuthUserFile /path_to_file/.passwords
<Limit GET POST>
Require valid-user
</Limit>
Następnie tworzymy plik z hasłami, którego ścieżka jest podawana jako parametr dyrektywy AuthUserFile.
Hasła w tym pliku muszą być zaszyfrowane, czego można dokonać za pomocą programu htpasswd, dostarczanego wraz z Apache.

Szczegółowe informacje na temat użytkowania można znaleźć w Manual Page: htpasswd lub w dokumentacji man, uruchamiając htpasswd w powłoce Unix:
$ 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.
.....

Zatem, nie mamy jeszcze pliku z hasłami i musimy go utworzyć:
$ htpasswd -c .passwords test
New password:
Re-type new password:
Adding password for user test

Po tej operacji zostanie utworzony plik .passwords, zawierający użytkownika test oraz jego hasło w zaszyfrowanej postaci:
$ cat .passwords
test:WE.MwmyNsIG76

Teraz chcemy dodać kolejnego użytkownika. Ponieważ plik z hasłami już istnieje, po prostu nie używamy opcji ‘-c’:
$ htpasswd .passwords test1
New password:
Re-type new password:
Adding password for user test1
$ cat .passwords
test:WE.MwmyNsIG76
test1:Eeg7zFPfq32BM

Jako parametr dyrektywy require podaliśmy valid-user. Oznacza to, że każdy użytkownik znajdujący się w używanym pliku z hasłami może uzyskać dostęp do chronionego zasobu. Jednakże, zgodźcie się, że wygodniej jest mieć wszystkie hasła w jednym pliku, a uprawnienia do konkretnych zasobów przyznawać tylko wybranym użytkownikom.
W tym celu, na przykładzie, przyznajemy dostęp tylko użytkownikowi test:

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

Można również grupować użytkowników i przyznawać dostęp nie konkretnym użytkownikom, ale grupom.
Można to zrobić za pomocą dyrektywy AuthGroupFile:

AuthGroupFile /sciezka_do_pliku/groups

W pliku groups tworzymy grupy w następujący sposób:
group1: user1 user3
group2: user2 user4
group3: user1 user3
Odpowiednio, dyrektywę require używamy w następujący sposób:

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>

Uwaga: wpis mógł powstać z pomocą AI i redakcji. Odpowiedzialny: Dmytro Lomaka, Kaltenkirchen.