Paweł Rabinek blog

Hasło poprzez .htaccess i .htpasswd

Czasem przydaje się zabezpieczenie hasłem pewnego katalogu na serwerze WWW. Przydatny do tego jest już wcześniej wspominany plik .htaccess – dla serwera Apache. Aby ograniczyć dostęp do katalogu/strony tylko osobom znającym hasło, należy w zabezpieczanym katalogu umieścić plik .htaccess zwierający:

AuthName "Podaj haslo"
AuthType Basic
AuthUserFile /sciezka_do_katalogu/.htpasswd
Require valid-user

Gdzie AuthName może być dowolnym tekstem. W linijce /sciezka_do_katalogu/.htpasswd należy podać pełną ścieżkę do pliku .htpasswd o którym będzie za chwilkę.

Następną czynnością jest utworzenie pliku .htpasswd, zawierającego nazwy użytkowników i ich hasła. Plik ten tworzy się w postaci:

username:password

gdzie password jest odpowiednio zakodowane. Przykładowo dla użytkownika pawel i hasla mojehaslo, plik .htpasswd przyjmie postać:

pawel:8OytGCYCAPbS6

Plik .htpasswd powinien być trzymany poza katalogiem web root, czyli tam gdzie zwykły użytkownik nie ma dostępu. Hasła do pliku .htaccess można zakodować przez htaccess password generator.

Od teraz każda próba wejścia do zabezpieczonego katalogu wywoła monit o hasło:

401 Authorization Required

Jeśli hasła nie znamy pokaże się nam komunikat 401 Authorization Required :)

15.07.2006 | trackback | Śledź komentarze w tym wątku: RSS 2.0.

Kategorie: Strony WWW

Komentarze (51) do artykułu “Hasło poprzez .htaccess i .htpasswd”

  • 1. rob. - 06.10.2006, 16:10:45

    wydawaloby sie ze wszystko takie proste ale dzialac nie chce :/

  • 2. xradar - 06.10.2006, 17:10:49

    Hmmm… no to dziwne, a jakie są objawy? Może pomogę.

  • 3. Myksa - 30.12.2006, 21:12:13

    Niestety u mnie też nie chce chodzić :/ Zrobiłem wszystko tak jak trzeba, korzystałem z kilku niezależnych generatorów haseł i wciąż nie mogę się poprawnie zalogować. Za każdym razem wyskakuje strona logowania, ile razy bym się nie logował.

  • 4. Paweł Rabinek - 30.12.2006, 23:12:52

    Hmm… W wolnej chwili będę musiał to sprawdzić. Bardzo możliwe, że trzeba coś włączyć w httpd.conf, albo podać inaczej ścieżkę do .htpasswd…

  • 5. mcv - 30.01.2007, 17:01:22

    Problem pewnie jest w generowaniu hasla proponuje uzyc

    htpasswd .passwords user pass

  • 6. adam - 18.04.2007, 10:04:34

    dziala, dziekuje

  • 7. Gelio - 06.12.2007, 17:12:46

    Mi nie chodzi. Nie pokazuje się takie okienko !

  • 8. jasiek - 16.12.2007, 11:12:42

    Chłopie! Ty nie masz pojęcia co robisz. Najpierw jakaś literatura, a potem twórz opisy. Pozostaje jeszcze wpis w httpd.conf.

  • 9. Paweł Rabinek - 16.12.2007, 13:12:12

    Rzadko kiedy masz możliwość edycji httpd.confa, a z opisaną metodą nie miałem nigdy problemu na domyślnych ustawieniach w httpd, więc wiem co piszę.

  • 10. kwachu - 13.03.2008, 13:03:09

    naprawde świetny poradnik… !!! szkoda tylko ze nic nie wspomniałes wymaganej konfiguracji serwera! ktora zreszta odgrywa kluczowe znaczenie!! naprawde… super! widac odrazu ze masz pojecie o czym piszesz
    hahahaha

  • 11. Paweł Rabinek - 13.03.2008, 16:03:36

    Heh, w konfiguracji serwera to sobie możesz wszystko ustawić. Nie spotkałem się jeszcze z sytuacją aby ten przykład nie działał, a miałem okazję sprawdzić go na kilku hostingach. Jak masz serwer pokracznie skonfigurowany, to swoje żale do admina wysyłaj. Nie życze sobie komentarrzy na poziomie dzieci z podstawówki.

  • 12. dfx - 19.04.2008, 09:04:01

    mi dziala wystarczyło zminic sciezke z
    AuthUserFile /sciezka_do_katalogu/.htpasswd
    na
    AuthUserFile sciezka_do_katalogu/.htpasswd

  • 13. hellx - 19.04.2008, 22:04:45

    Wszystko działa, za pierwszym podejściem, sprawa jest tak prosta, że tylko pokraczny wpisujący lub pokraczny serwer może stać na przeszkodzie… pozdrawiam autora :]

  • 14. nightcon - 21.04.2008, 14:04:20

    Zapomniałeś napisać o prawach dostępu do pliku .htaccess – bedziesz mial chmod 700 na nie i raczej Ci nie pyknie prawda ? :) – pozdrawiam

  • 15. nightcon - 21.04.2008, 14:04:45

    tyczy się to też pliku .htpasswd

  • 16. Michal - 23.05.2008, 00:05:17

    Działa pięknie. Dzięki za pomocny artykuł.

  • 17. logowanie - polish:Elite:board - 24.05.2008, 22:05:30

    [...] w panelu administracyjnym webhostingu ewentualnie mo

  • 18. Glek - 27.06.2008, 09:06:01

    Wszystko działa poprawnie, dzięki wielkie!

  • 19. kals - 15.07.2008, 12:07:13

    no działa :P

  • 20. Wiru - 05.08.2008, 10:08:12

    Wszystko dziala bez problemu tylko dobrą ścieżke trzeba podać od katalogu podstawowego.

    Co do generatora to też działa bez problemu.

  • 21. procek - 28.08.2008, 08:08:59

    Nie przyłożyłeś się do tego artu. Po pierwsze wpisujemy:
    ‘AuthName’ „Podaj haslo”
    a nie
    AuthName „Podaj haslo”

    Po drugie ścieżka do katalogu ma być bezwzględna, a nie z domeny.

    Po trzecie to konf. każdego serwera jest inna, więc nie pisz, że ty podałeś jak wszystko jest dobrze…

    Ale bardzo treściwy i skondensowany artykuł i za to Ci chwała. Blog również mi się podoba.

  • 22. Marcin - 10.09.2008, 08:09:26

    2 dni siedziałem nad tym zagadnieniem i nic.
    To jest treściwe i właściwe wyjaśnienie problemu.
    Pozdrawiam

  • 23. Michal - 09.10.2008, 10:10:59

    Sciezka MUSI BYC BEZWZGLEDNA !!!

  • 24. blackest - 12.10.2008, 14:10:17

    Też się nad tym głowiłem i w końcu doszedłem do tego jak to zrobić. Generalnie opisana tutaj metoda jest dobra, ale BRAKUJE informacji o tym że należy zmodyfikować plik httpd.conf.
    Dyrektywą odpowiedzialną za szukanie pliku htaccess jest:
    AccessFileName .htaccess
    Ponadto jest jeszcze jedna dyrektywa która mówi apaczowi co ma zrobić z napotkanym plikiem htaccess i nazywa się AllowOverride. Aby ta dyrektywa NIE ignorowała pliku htaccess należy ją ustawić na:
    AllowOverride All
    I wtedy strona powinna być już zabezpieczona hasłem :)

  • 25. rozwell - 05.01.2009, 21:01:25

    Witam,
    Autor opisał tutaj metodę do konfiguracji poprzez .htaccess i jest to zrobione na tyle dobrze, że założenie hasła zajęło mi ok 30 sekund.
    Jeśli ktoś ma problemy z konfiguracją serwera to jest to zupełnie oddzielny temat! Przecież ustawienie czegokolwiek poprzez .htaccess z góry wymaga jego działanie… Wystarczy rozumieć czytany text.
    To samo tyczy się podstawowej wiedzy, o systemach unixowych (tutaj: ścieżka do pliku).

  • 26. Ładowny - 19.02.2009, 13:02:14

    No nie do końca. Plik .htaccess jest po to żeby użytkownik- nie administrator serwera mógł unieważnić ( override ) dyrektywy Apache’a ustawione w głównym pliku / plikach konfiguracyjnych. Założenie jest takie że nie masz tam dostępu. Jeżeli możesz modyfikować httpd.conf to lepiej wsadzić dyrektywy tam i wyłączyć .htaccess.
    Problem z nim jest taki, że jesli jest właczony, to apache szuka go w każdym otwieranym katalogu, czyli np jeśli masz url’a http://mojserver.com/pliki/zdjecia/2009/zdjecie10.htm to szuka najpierw w głównym , potem w ./pliki potem w ./pliki/zdjecia a potem w ./pliki/zdjecia/2009. To wszystko zajmuje mu trochę czasu i generalnie powoduje większe obciążenie serwera. Jak masz 30 odwiedzin dziennie to może nie mieć znaczenia, ale jak kilka milionów to już co innego.
    Ja mam na wszystkich serwerach .htaccess wyłączony. Włączam tylko na maszynach testowych, żeby programiści mogli sobie poeksperymentować nie przeładowując Apache’a co chwila. W środowisku produkcyjnym oszczędzam każdy bajt pamięci i milisekunde czasu procesora więc pakuje te dyrektywy do głównego konfiga.
    Dyrektywa „AllowOverride All” pozwala zmieniać wszystkie parametry dla danego katalogu/vhosta – do autoryzacji wystarczy AlowOverride AuthConfig
    Ale lepiej jest AlowOverride None i w konfiguracji virtual host’a dać:
    # Żeby zabezpieczyć hasłem strone http://mojserver/tajny
    AuthName „Cokolwiek”
    AuthType Basic
    AuthUserFile /sciezka_do_katalogu/.htpasswd # bezwzględna ścieżka
    require valid-user

    Dlatego uzupełniłbym to, skąd innąd niezłe howto o tę informację.

  • 27. Patryk Dominiczak - 28.02.2009, 23:02:23

    Chłopak pomaga a wy macie problem, ludzie potrafią być faktycznie idiotami…
    Działa bez problemu i zawsze działało.

  • 28. Darek - 04.03.2009, 12:03:24

    Faktycznie, niektórzy to są delikatnie mówiąc „inni” … Pozdrawiam Autora i sugeruję – tak jak zalecał Sz.P. Ładowny – uaktualnienie artykułu o pewne istotne informacje :)! Może zadowoli to malkontentów …

    Z wyrazami najszczerszego szacunku :)!
    Darek

  • 29. Edytor plików .htaccess - Paweł Rabinek blog - 11.03.2009, 15:03:47

    [...] czyli hasło na katalog, o którym kiedyś [...]

  • 30. oskar - 18.06.2009, 18:06:16

    A ja dopiero co zacząłem i nie wiem jak stworzyć plik .htaccess, ponieważ wymaga nazwy i mam zonka… może ktoś pomóc??

  • 31. Jakub - 01.07.2009, 11:07:37

    A może wystarczy wpisać htpasswd -c sciezka_do_katalogu/.nazwa_pliku użytkownik wygeneruje nam nowy plik z hasłem, pozdrawiam :)

    a.htaccess tworzysz sam tj mcedit > F10 > .htaccess

  • 32. Piotr Kwiatek - 21.07.2009, 17:07:27

    Dla uzytkownikow systemow Windows i Notatnika wazna uwaga. Notatnik lubi dodawac dziwne znaczki (w zaleznosci od kodowania) na poczatku pliku. Jesli zapiszecie .htaccess lub .htpasswd w Notatniku na 99% ujrzycie blad serwera 500. Proponuje zapisac plik w innym edytorze i przyjrzec sie wszystkim znaczkom. Najlepiej nie wiem cos jak najbardziej zblizonego do VI.

  • 33. Pingwin - 06.08.2009, 16:08:57

    Witam

    Sposób działa.

    Faktyczni jest potrzebny odpowiedni wpis w httpd.conf, mniej obeznani webmasterzy mogą nie wiedzieć co to jest i jak to działa – warto dowiedzieć się czy odpowiedni wpis o których pisali moi poprzednicy jest wykonany.

    Ścieżka bezwzględna – też z tym zawsze mam problem, czasem względna czasem bezwzględna czasem z .. a czasem koniecznie cała.
    Zamiast złościć się warto by było małą dygresję o katalogach w środowisku Linux, powiązaniu Apache z katalogami i po problemie, a nie wściekać się na innych. Nikt z nas nie urodził się z tą wiedzą.

    Dygresja:
    W środowisku Linux/Unix odmiennie jak w Windows wszyscy użytkownicy mają swoje katalogi (nazywają się przeważnie tak jak login) w jednym zbiorczym katalogu HOME.
    Standardowo HOME jest umiejscowiony w katalogu / (tak jedna ukośna kreska).
    Podając ścieżkę należy podać:

    /home/nasz_login/public_html/dalej_katalogi_tak_aby_dojsc_do_konkretnego_z_.htaccess

    Autor zamiast poniżać faktycznie powinien zrobić pewne korekty w tekście.
    moja przygoda z pingwinem trwa już od 6 lat, mimo to pamiętam czasy gdy była to czarna magia. Społeczności i nauka na „knifach” to potężne narzędzie ;)

    Pozdrawiam

  • 34. ecco - 21.08.2009, 17:08:42

    co do bezwzględnej ścieżki – chyba najłatwiej uzyskać ją wywołując w katalogu, w którym chcemy umieścić nasz plik .htpasswd, skrypt zawierający linię:

    echo __FILE__;

    i ta stała właśnie zawiera bezwzględną ścieżkę do naszego skryptu i zarazem do folderu.
    Miałem z tym problem pod systemem Windows i dopiero co doszedłem do rozwiązania ;)
    Co dziwne, pisząc np. polecenie:
    ErrorDocument 404 /page404.html
    plik page404.html zostanie wywołany z głownego katalogu serwera, ale jeśli tak samo postąpimy z .htpasswd, to niestety dostaniemy error 500 ;]

  • 35. kami - 15.09.2009, 07:09:06

    Ścieżka nie musi być bezwzględna. Może być względna, gdzie punktem odniesienia jest ServerRoot.

  • 36. Sławek - 03.11.2009, 09:11:37

    Posikałem się ze śmiechu.
    Ładowny (post 26) poucza wszystkich jak ma być, bo jest wielkim adminem z milionami odwiedzin (marzenia rzecz piękna). Tyle, że w tych pouczeniach był bliski, ale niestety nie trafił w prawidłową składnię konfiguracji.
    A tak przy okazji to jeśli ktoś na podstawie powyższego opisu nie potrafi tego zrobić to lepiej niech sobie odpuści. Nawet jak jakimś cudem mu się uda to i tak za chwilę będzie miał ‘gości’ bo zapewne coś innego sp…..

    Pozdrowienia dla autora opisu i myślących.

  • 37. Piorun - 05.01.2010, 15:01:09

    Ty Sławek coś chciałeś dodać do meritum czy tylko popierdziałeś i poszedłeś? Pisz o konkretach dotyczących meritum albo wcale!

  • 38. procek - 12.01.2010, 23:01:32

    Zamotaliśmy wszyscy w tym temacie na czele z autorem. Testowałem na kilku serwerach i…
    Składania podana przez autora jest poprawna, ale w przypadku 3 linii MUSI być to ścieżka bezwzględna. Bezwzględna w tym wypadku ścieżka na maszynie, a nie bezwzględna ścieżka z domeny, która to zwykle wskazuje na folder public_html.
    AuthName „Podaj haslo”
    AuthType Basic
    AuthUserFile /sciezka_bezwzgledna_do_katalogu/.htpasswd
    Require valid-user

    Jak słusznie ktoś podał wystarczy sobie w folderze stworzyć pliczek PHP i napisać w nim:
    echo __FILE__;
    Następnie otworzyć stronę, skopiować wynik i wkleić do 3 linii. Temat nie jest taki łatwy, bo każda firma hostingowa ma nieco inne konfiguracje. Najbardziej utrudnia życie klientom OVH, które prawie wszystkie wpisy w HTACCESS ma niestandardowe…

  • 39. ebooki - 11.04.2010, 16:04:30

    super artykuł. Dla mnie bardzo pomocny.

  • 40. Michał - 14.04.2010, 12:04:34

    Mam konto na serwerze szkolnym i właśnie coś takiego jest mi potrzebne i nie działa. W ogóle nie ma żadnej reakcji. Katalog, który chce ukryć to /www/Szkoła do którego wgrałem plik .htaccess w katalogu /www/ jest plik .passwd z loginem i wygenerowanym hasłem. Wszystko do zobaczenia na stronie mstefanowicz.student.zsl.gda.pl proszę o pomoc. Mail
    : snap171@o2.pl;
    gg: 8106441 (z reguły niewidoczny)

    PzDr.

  • 41. brainac - 17.05.2010, 12:05:15

    Info dla klientów home.pl – tak nie działa. Tam robią to trochę po swojemu: https://home.pl/dokumentacja/funkcjeserwera/htaccess/dostep

  • 42. Kuba Dirska - 23.06.2010, 09:06:33

    Dzięki za ten wpis. Krótko, rzeczowo i przede wszystkim skutecznie.
    Na serwerze home wszystko działa pięknie :)

  • 43. Tworzenie stron - 04.08.2010, 12:08:03

    Działa elegancko tylko faktycznie brakowało informacji o tym że ścieżka do pliku .htpasswd ma być bezwzględna.

  • 44. Karol - 07.09.2010, 14:09:53

    Działa wzorowo, ścieżka musi być bezwzględna a zakończenia linii musiałem przekonwertować na UNIXOWE (z CR LF na LF))

  • 45. linux nie winda - 28.09.2010, 18:09:43

    jak wyżej, wszystko w opisie się zgadza i oczywiście nie ma prawa działać o ile nie jest odpowiednio skonfigurowany serwer, domyślnie Apache2 nie wyświetla plików .htpasswd i .htaccess jednak kompletnie je ignoruje i nigdy nie pyta o hasło jeśli nie jest taka reakcja skonfigurowana w Apache2.conf dawno temu w epoce kamienia łupanego to był httpd.conf który teraz nie ma znaczenia.

  • 46. Søkemotoroptimalisering - 31.10.2010, 20:10:33

    A mi wyskakuje internal server error. Co to moze byc?

  • 47. klistremerker - 02.04.2011, 20:04:24

    Nie otwiera mi się ta strona z generatorem. Ale dzięki za ten artykuł…

  • 48. hosti - 07.04.2011, 09:04:45

    dzięki za wpis, bardzo się przydał i pomógł

  • 49. dejaraczo - 15.06.2011, 10:06:09

    „A mi wyskakuje internal server error. Co to moze byc?”

    też miałem taki problem, z logów apacha wyczytałem:
    „No such file or directory: Could not open password file: /etc/apache2/.pass”
    czyli był problem ze ścieżką, bo w .htaccess podałem „.pass” a musi być podana ścieżka bezwzględna
    czyli np. „/var/www/xxx/yyy/.pass”

  • 50. Janek - 26.11.2011, 14:11:19

    Dzięki, artykuł pomógł mi odświeżyć nieco wiedzę bo dawno tego nie robiłem. Co prawda nie działało od razu z Apache2 bo nie miałem włączonego AllowOverride All w pliku /etc/apache2/sites-aviable/dafault co ma do czynienia z konfiguracją serwera. Potem wszystko poszło bez problemu. Do generacji hasła radzę jednak użyć wewnętrznego narzędzia konsoli „$htpasswd -b PLIK UŻYTKOWNIK HASŁO” niż korzystać ze stronek internetowych. Szczęść Boże.

  • 51. Jorekk - 31.12.2011, 01:12:00

    elegancko dziala – polecam

Skomentuj: