Hlavní navigace

Ovládání Apache a autorizace

Hynek Trávník 12. 2. 2007

V dnešním článku se budeme zabývat spouštěním, vypínám a restartováním Apache a autorizací. Ukážeme si, jak uvést démona do chodu a jak jej regulérně vypnout nebo restartovat, aniž dojde k nějakým nečekaným událostem. V další části článku se budeme zabývat omezením přístupu na webové stránky pomocí uživatelského jména a hesla.

Spouštění

Pro spuštění démona webserveru spustťte httpd bez parametrů. Démon si najde konfigurační soubory. Implicitně je hledá v /usr/local/etc/httpd/conf/httpd.conf. Pokud se nachází někde jinde, musíme zadat cestu k souboru pomocí argumentu –f:

#httpd –f /apache/conf/httpd.conf

Jestliže se server spustí úspěšně, budete vráceni zpět do příkazového řádku a démon poběží na pozadí. Tuto skutečnost si můžete ověřit ve výpisu spuštěných procesů:

#ps –A | grep httpd

Dojde-li ke chybě, najdete na obrazovce chybové hlášení s detailním popisem nastalé situace. Nyní se můžeme k serveru připojit prostřednictvím prohlížeče. Zadejte adresu http://localhost/. Server používá výchozí port 80 – ten je výchozí i pro všechny prohlížeče. Při jakémkoli selhání je k dispozici soubor s chybovými hlášeními. Jedná se o error_log  v adresáři logs. Jako provozovatel webserveru budete jistě chtít, aby se Apache spouštěl po automaticky po startu systému a vy jste se nemuseli denně obtěžovat psaním příkazu. Musíte proto přidat příslušný příkaz do spouštěcího skriptu vašeho systému.

Zastavení

Ukončení činnosti démona se provádí odesláním signálu TERM hlavnímu procesu. Potřebujete znát ID tohoto procesu a to získáte ze souboru httpd.pid v adresáři logs. Použijete unixovou fintu se zpětnými uvozovkami:

#kill –TERM `cat /apache/logs/httpd.pid`

Apache během svého „života“ spouští další (podřazené) procesy. Nikdy nepřerušujte tyto procesy, ale zastavujte jen proces hlavní, jehož PID je uloženo. Kořenový proces se postará o zastavení podřízených procesů sám. Může to trvat i několik sekund. Signál TERM vede k okamžitému ukončení všech zpracovávaných požadavků.

Restart

Naopak signál HUP povede k okamžitému restartování serveru. Zabijí se jen podřízené procesy a hlavní proces poběží dál. Potom se znovu načtou konfigurační soubory a otevřou se logy. Zpracovávání veškerých požadavků bude přerušeno. Chcete-li, aby tomu tak nebylo, tedy aby byly všechny požadavky vyřízeny před restartem, použijte signál USR1.

Autentizace

Autentizací se v tomto případě rozumí omezení přístupu do nějakého adresáře prostřednictvím přiděleného přístupového jména a hesla. V hlavičce každé odpovědi serveru je obsažen dotaz na tuto kombinaci a v hlavičce každého požadavku klienta musí být obsaženo uživatelské jméno a heslo, jinak bude přístup odmítnut. Prohlížeče zobrazují zpravidla podobný dialog:

Authorization dialog

Autentizace se týká vždy konkrétního adresáře, takže se v konfiguračním souboru uvádí mezi „značky“ <Directory> a </Directory>. Různé adresáře mohou požadovat jiné přihlašovací údaje. Úsek konfiguračního souboru by mohl vypadat následovně:

<Directory /duverne>
    AuthType Basic
    AuthName „Důvěrné“
    AuthUserFile /hesla/duverne/hesla.txt
    Require user Franta Pepa Petr Pavel Frank
</Directory /duverne>

Direktiva AuthType udává typ autentizace. Apache totiž implementuje dva druhy autentizace – základní, neboli Basic a pokročilou, Digest. My začneme pro jednoduchost typem Basic, i když to není to příliš bezpečný způsob ověřování. Heslo se před přenosem nešifruje a posílá se internetem jak plain text. Pro zkušenějšího hackera by neměl být problém takové heslo odhalit.

AuthName nastavuje řetězec, kterým bude návštěvník dotázán na přihlašovací údaje – zobrazí se v dialogovém okně prohlížeče. AuthUserFile udává umístění souboru se seznamem uživatelských jmen a jejich hesel v souborovém systému. Require udává, kdo bude mít k adresáři přístup. Můžeme uvést výčet uživatelů jako v příkladu výše nebo klíčové slovo valid-users zastupující všechny uživatele v daném souboru. Další možností je použití skupin. V takovém případě musíme ještě uvést, kde se nachází definice skupin, direktivou AuthGroupFile.

Autentizační soubory

Obsah soubor s kombinacemi uživatelského jména a hesla se nevytváří ručně. Instalace Apache obsahuje spustitelný soubor htpasswd, který spravuje obsah souboru. Nemusíme do něj vůbec nahlížet. Není-li soubor s kombinacemi uživatelského jména a hesla vytvořen, použijeme přepínač –c, čímž ríkáme, že se má vytvořit (create). Syntaxe je následovná:

#htpasswd –c hesla.txt Franta

Vytvoří se nový soubor hesla.txt v aktuálním adresáři a jsme dotázáni na heslo pro uživatele Franta. Máme-li soubor vytvořen a chceme pokračovat přidáním uživatele, pak používáme htpasswd bez přepínače:

#htpasswd hesla.txt Pepa

Výše uvedený příkaz zapíše do souboru hesla.txt záznam pro uživatele Pepa a dotáže se nás na jeho heslo.

Se skupinami je tomu jinak. Seznam skupin se uvádí v prostých textových souborech, které mohou vypadat následovně:

partaci: Franta Pepa Petr Pavel
americani: Dave Frank
spanele: Jose

V direktivě AuthGroupFile uvedeme adresu tohoto souboru. Potom už můžeme některé nebo všechny tyto skupiny použít v  require:

<Directory /duverne>
    AuthType Basic
    AuthName „Důvěrné“
    AuthUserFile /hesla/duverne/hesla.txt
    AuthGroupFile /hesla/duverne/skupiny.txt
    Require group partaci
</Directory /duverne>

Nezapomeňte, že uvádíte-li v  Require skupinu, musíte použít AuthGroupFileAuthUserFile, jinak by Apache nevěděl, jak ověřit hesla jednotlivých uživatelů.

Co dál

Příště si řekneme něco o konfiguračních sekcích a konfiguračních souborech obecně.

Našli jste v článku chybu?

22. 8. 2010 13:33

student FIS (neregistrovaný)

Přesně takhle se to učí i na fakultě iformatiky a statistiky na VŠE v Praze. Používáme pojem „autentizace“ a „autorizace“. S praxí zkušenosti nemám, ale tohle je teorie, kterou nás učí.

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?