Vyvstane-li potřeba omezit přístup k nějaké části www stromu, je namístě použít některou z metod autorizace. Jedna z nich, která je založena na standardní funkci webového serveru a tak neklade na uživatele téměř žádné nároky, je autorizace prostřednictvím direktiv v souborech .htaccess a .htpasswd.
Autorizace je prováďěna na základě dvojice
jméno/heslo, která se nachází v souboru .htpasswd. Oba soubory, .htaccess i .htpasswd jsou soubory
textové, takže k modifikaci postačí jakýkoli
textový editor. Omezení přístupu pak funguje
rekurzivně od adresáře, kde se nachází soubor .htaccess, tedy
pokrývá i všechny podadresáře a soubory v nich.
Nejříve je vhodné vytvořit soubor s hesly .htpasswd. Toto je
nejjednodušší realizovat přímo na serveru (v našem
případě radio-home),
kde je nainstalována utilita htpasswd. V
okně terminálu přejdete do adresáře, kde chcete
budoucí soubor .htpasswd
mít, a spustíte příkaz
htpasswd -c .htpasswd jméno_prvního_uživatele
tím se vytvoří nový soubor .htpasswd obsahující
jméno a heslo prvního uživatele. Heslo se do tohoto
souboru ukládá již v zašifrované podobě. (Hesla
jsou šifrována klasickým DES algoritmem).
Další uživatele přidáte jednoduše (nyní již bez
volby -c)
htpasswd .htpasswd jméno_dalšího_uživatele
Smazat uživatele lze v jakémkoli textovém editoru tak,
že v souboru .htpasswd smažete
řádek s příslušným jménem a heslem.
Například vytvoříme soubor s heslem pro uživatele navstevnik a heslo host. Výpis z okna terminálu vypadá např. takto:
[pavel@local tmp]$
htpasswd -c .htpasswd navstevnik |
navstevnik:uJnnreCzu4lFM |
Dále přidáme dalšího uživatele, např. student1 s heslem rn800523:
[pavel@local tmp]$ htpasswd .htpasswd student1 |
Soubor .htpasswd se
změní:
navstevnik:uJnnreCzu4lFM student1:mIAWCRA5Y6meQ |
Z bezpečnostních důvodů by se měl soubor .htpasswd nacházet mimo oblast
www stránek.
Vlastní proces autorizace je zabezpečen existencí
souboru .htaccess v
adresáři , k němuž chcete omezit přístup z webu
(zabezpečení se tedy netýká klasického
přístupu k souborům na serveru přes ssh či sambu). Jakmile web
server (zde apache) dostane požadavek, při němž vstoupí do
adresáře s .htaccess,
provede direktivy v tomto souboru obsažené a tedy i
zmíněnou autorizaci.
Vytvořte v příslušném adresáři soubor .htaccess a umístěte do něj
tento obsah:
AuthUserFile /cesta/k/vasemu/souboru/.htpasswd
AuthGroupFile /dev/null
AuthName "Soukroma autorizacni stranka"
AuthType Basic
require valid-user
První položka AuthUserFile
obsahuje celou cestu k umístění vašeho souboru s hesly .htpasswd. Tento se může
nacházet na vámi zvoleném místě, opět
opakuji, doporučuji umístit mimo oblast vašich www
stránek. K souboru musí být nastavena práva
pro čtení pro ostatní (chmod o+r) a celá cesta
k tomuto souboru musí být alespoň průchozí pro
ostatní (adresáře chmod
o+x), jinak apache soubor nenačte a na stránky
nepustí nikoho (tedy ani oprávněné uživatele).
Soubor se obecně nemusí jmenovat .htpasswd,
můžete ho nazvat jakkoli a příslušně změnit cestu v AuthUserFile a název při
tvorbě pomocí htpasswd.
Direktiva AuthGroupFile
slouží k nastavení cesty k souboru ,
obsahujícímu skupiny uživatelů. Takto lze omezit
přístup do konkrétního adresáře na omezenou
skupinu uživatelů. V souboru se nacházejí
samostatné řádky odpovídající
jednotlivým skupinám uživatelů a to vždy název_skupiny: uživatel1
uživatel2 uživatel3 atd. Jednotliví uživatelé jsou
definováni v již zmiňovaném souboru .htpasswd. Pokud
nepoužíváme skupiny, nastavíme cestu na /dev/null.
Direktiva AuthName obsahuje
název oblasti, kterou chcete zabezpečit. Může obsahovat
vámi zvolený název zabezpečené oblasti.
Pokud název obsahuje mezery, je ho nutno uzavřít do
uvozovek.
Direktiva AuthType
slouží k volbě typu autorizace. Zde volíme zpravidla Basic pro základní
autorizaci.
Poslední direktiva require
specifikuje vlastní omezení přístupu. Argumenty
mohou být tyto.
require user uživatel1
[uživatel2] ...
kdy je přístup omezen pouze na vyjmenované uživatele (ze skupiny uživatelů definovaných v .htpasswd),
require group název_skupiny1 [název_skupiny2] ...
kdy je přístup omezen pouze na vyjmenované skupiny (definované v souboru uvedeném v direktivě AuthGroup),
require valid-user
kdy je přístup umožněn všem uživatelům definovaným v .htpasswd.
Kombinací těchto argumentů v jednotlivých .htaccess souborech lze např.
zpřístupnit stránky všem autorizovaným uživatelům a
určitou část souborů (adresářů) pouze vybraným
uživatelům.
Soubor .htaccess by měl
mít nastavená práva stejně jako výše
uváděný .htpasswd,
aby apache mohl tento soubor najít a přečíst.
Pokud je vše vytvořeno korektně a správně nastaveno, při
zadání URL z autorizované oblasti se objeví
autorizační okno.
Po zadání korektního jména a hesla pak
již následuje otevření příslušné
stránky. Jednoduchý příklad stránek s
autorizací naleznete zde (pro
autorizaci uveďte jméno host
a heslo host).
Další informace o .htaccess a autorizaci lze najít např. na stránce Comprehensive guide to .htaccess nebo manuál HTTP serveru Apache.