

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % apache
 % Copyright Dirk Hebenstreit
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.1.2.12 $
 % $Source: /cvsroot/selflinux/tutorial/advanced/netzwerk_advanced/apache/apache,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: apache,v 1.1.2.12 2002/12/07 18:10:05 jgraber Exp $

	\title{Linux als WWW-Server}


	
	    \author{Dirk Hebenstreit}
	    %\url{mailto:dirk.hebenstreit@epost.de}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{andere_dienste1.tex}
		Internet
		%\ref{Web.tex}
		Web
		%\ref{Web-Server.tex}
		Server
	\ref{apache}

    \par{Layout}
    Matthias Nuessler
	    %\url{mailto:m.nuessler@web.de}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{Was ist eigentliche der Apache ?} \label{d46e53}
        
        
        
  \par
  
Der bekannteste Dienst des Internet ist zweifelsohne das {\bf WWW} oder {\bf World Wide
Web} (Welt Weites Warten ;-) ). Es ist eine klassische Client-Server-Anwendung,
bei welcher der Client passiv Informationen vom Server bezieht und diese in
der Regel nicht verändern kann. Grundlage sind ein zustandsloses Protokoll ({\bf HTTP}=Hypertext
Transfer Protocol) und die Seitenbeschreibungssprache {\bf HTML} (Hypertext Markup
Language).
        
        
  \par
  
Der Server hat die Aufgabe, die Anfragen der Form
{\bf Dienst://server.in.domäne/Pfad\_zur\_Seite} zu beantworten und die gewünschte
Seite auszuliefern. Ferner können dynamische Seiten generiert werden, z.B. durch
eine Datenbankanwendung, welche vom WWW-Server abgefragt wird. Um besondere Dienste
zu realisieren, können auch komplette Programme auf dem Webserver gestartet werden,
in der Regel über das {\bf CGI} (Common Gateway Interface). Dies erlaubt es, vom Client
aus bestimmte Prozesse auf einem Server anzustoßen.
        
        
  \par
  
Seit der Erfindung des WWW Ende der 80iger Jahre am CERN in der Schweiz, hat sich
der Dienst vom reinen Userinterface für Informationssysteme zu einer globalen
und plattformübergreifenden Benutzeroberfläche gewandelt. Damit wurden die Inhalte
und Aufgaben der Web-Server immer weiter ausgedehnt, und es entstanden verschiedene
Lösungsansätze und Programme.
        
        
  \par
  
Der am weitesten verbreitete Server im Internet ist mit über 60% der {\bf Apache}.
Er ist als {\bf GNU}-Software frei verfügbar und hat sich als ''A patchy Server''
aus dem NCSA-Server entwickelt, der auch die Basis für andere Entwicklungen
darstellt. Zwischenzeitlich ist er auf nahezu alle Plattformen portiert worden,
auch eine NT-Variante ist verfügbar.
        
        
  \par
  
Der Apache stellt in der SuSE-Distribution den Standard-Webserver dar und wird
in der Serie {\bf n} installiert.
        
\section{Grundkonfiguration} \label{d46e107}
        
        
        
  \par
  
Die Konfigurationsdateien des Apache befinden sich im Verzeichnis {\bf ''/etc/httpd''}
Dort liegt nach der Installation die Datei {\bf httpd.conf}.
        
  
        
  \par
  
Bei älteren Installationen gibt es darüber hinaus noch weitere
Dateien:
                \begin{list}{*}{}
        
	\item 
{\bf access.conf}
        
        
	\item 
{\bf magic}
        
        
	\item 
{\bf mime.types}
        
        
	\item 
{\bf srm.conf}
        
\end{list}

        \subsection{Übersicht der Konfigurationsdateien} \label{d46e151}
        
                

                
  \par
  
Der Apache verwendet eine Konfigurationsdatei
{\bf httpd.conf}.
Hier werden die Grundeinstellungen für den Server vorgenommen.
                

                
  \par
  
Manchmal, besonders in älteren Installationen, sieht man noch
weitere Dateien:

                \newcounter{d6e164} 
                  \begin{list}{\arabic{d6e164}}
                  {\usecounter{d6e164}}
        
                        
	\item 
{\bf access.conf} \linebreak 
Wie der Name es erahnen läßt, werden hier die Zugriffsrechte auf den
Server vergeben.
                        
                        
	\item 
{\bf httpd.conf} \linebreak 
Hier werden die Grundeinstellungen für den Server vorgenommen.
                        
                        
	\item 
{\bf magic} \linebreak 
Diese Datei wird vom Apache benutzt, um den Typ einer auszuliefernden Datei
zu ermitteln.
                        
                        
	\item 
{\bf mime.type} \linebreak 
Hier stehen die MIME-Typen (Multipurpose Internet Media Extensions).
                        
                        
	\item 
{\bf srm.conf} \linebreak 
Ergänzungen zur Grundkonfiguration (Server Ressource Management).
                        
                \end{list}
                

                
  \par
  
Nach der Installation mittels {\bf YaST},
{\bf rpm} oder einem anderen Verfahren
ist der Server bereits
einsatzbereit. Er wird beim Starten des Rechners automatisch in Runlevel 2 gestartet
und kann per Hand über das Script {\bf /etc/rc.d/apache} beeinflußt werden.
Dieses wertet die Variable {\bf START\_HTTPD} aus, welche in {\bf rc.config}
auf {\bf YES} gesetzt werden muß (ist standardmäßig der Fall). Danach benutzt
der Apache das Verzeichnis {\bf /usr/local/httpd/htdocs} als Basisverzeichnis
für die HTML-Dateien. Der Aufruf vom Browser aus sollte dann bereits folgendes
Ergebnis liefern:
                
                
  \par
  
Um den Server herunterzufahren geben sie

{\bf ''/etc/rc.d/apache stop''}
ein.

Wenn Sie ihn wieder starten wollen, so geht dies analog mit

{\bf ''/etc/rc.d/apache start''}.

Um im laufenden Betrieb Änderungen an den Konfigurationsdateien wirksam werden
zu lassen, können Sie mit

{\bf ''/etc/rc.d/apache restart''}

einen Neustart des Servers veranlassen.
Entgegen älteren Versionen des Apache wird hierbei lediglich der Vaterprozeß
von der Änderung informiert (mittels {\bf kill -HUP PID-des-Vater-httpd}) und nicht
die gesamte Prozeßgruppe gekillt und neu gestartet.
                
        
        \subsection{Wichtige globale Parameter in der httpd.conf} \label{d46e243}
        
                
                
  \par
  
Wie Sie bereits gesehen haben, ist der Apache bereits direkt nach der Installation
funktionsbereit. Um ihn in das lokale Netz einzubinden und auf die zu erwartende
Last einzustellen, sollten aber einige Änderungen erfolgen. Folgende Parameter
in der Datei {\bf httpd.conf} sind interessant:
                
                
  \par
  
{\bf LoadModule, modulname Pfad zum Modul} \linebreak 
Wie eingangs erwähnt, zeichnet sich der Apache
durch Modularität und leichte Erweiterbarkeit aus. Über diese Parameter in {\bf httpd.conf}
kann der Leistungsumfang des Apache bestimmt werden, indem einzelne Module ein- oder
ausgeblendet werden. Dies kann in sensiblen Bereichen (Internet-Server) besonders
interessant werden, wenn sich z.B. ein Modul als potentielle Sicherheitslücke erwiesen
hat. Anstatt den gesamten Server vom Netz zu nehmen (was einem Verlust der Web-Präsenz
und damit geschäftlichen Verlusten gleichkommt) muß lediglich das betroffene Modul
deaktiviert und der Apache neu gestartet werden. Damit fehlt zwar ein Teil der
Funktionalität, aber nicht das gesamte System.
                
                
  \par
  
{\bf ServerType standalone} \linebreak 
Standardmäßig läuft der httpd bei SuSE als Standalone-Server,
d.h. er wird über die rc-Skripte gestartet und bleibt bis zum Beenden durch
Aufruf des Shutdown-Skriptes im Speicher. Alternativ hierzu kann auf Servern,
welche lediglich für besondere Zwecke und nur zeitweise als Webserver laufen,
auch ein Start über den inetd erreicht werden. Neben der entsprechenden
Einrichtung in der Datei {\bf /etc/inetd.conf} muß in der {\bf httpd.conf}
der Wert {\bf standalone} durch {\bf inetd} ersetzt werden.
                
                
  \par
  
{\bf Port 80} \linebreak 
Der Standard-Port für das HTTP ist 80. Ist es aus besonderen Gründen erforderlich,
hiervon abzuweichen, kann hier ein alternativer Port angegeben werden. Beachten
Sie dabei, daß diese Änderung den Clients bekannt gemacht wird (Browser-Konfiguration)
und das der gewünschte Port auf der Servermaschine auch frei ist.
                
                
  \par
  
{\bf User wwwrun \linebreak Group nogroup} \linebreak 
Der httpd-Prozeß sollte aus Sicherheitsgründen nicht unter {\bf root}-Kennung
laufen. Da aber für die Benutzung von Ports unterhalb von 1023 eben dieses notwendig
ist, startet lediglich der Vaterprozeß als {\bf root} und wechselt anschließend
nach User und Group. Der Standarduser {\bf wwwrun} ist
bei SuSE bereits eingerichtet, der Wert -2 führt in die Gruppe {\bf nogroup},
welche ebenfalls auf Ihrem System vorhanden sein sollte.
                
                
  \par
  
{\bf ServerAdmin you@your.address} \linebreak 
Fehler und Probleme sendet der httpd per Mail an diese Adresse. Sie taucht auch in
den automatisch generierten Fehlerseiten für den Benutzer auf und sagt ihm,
an wen er sich wenden soll, falls Probleme auftauchen. Im Internet hat sich
die Konvention {\bf webmaster@ihre.domain} durchgesetzt, wobei webmaster
in der Datei {\bf /etc/aliases} auf einen realen Benutzer verweist.
                
                
  \par
  
{\bf ServerName www@ihre.domain} \linebreak 
Hier tragen Sie den qualifizierten Namen Ihres Servers ein. Beachten Sie dabei,
daß dieser aufgelöst werden können muß, d.h., entweder über DNS oder in der
Datei {\bf /etc/hosts} zugeordnet wird.
                
                
  \par
  
{\bf ServerRoot ''/usr/local/httpd''} \linebreak 
Dies ist das Basisverzeichnis der httpd-Installation.
Wenn nicht anders angegeben (s.u.) werden Logdateien u.ä. abwärts von diesem
Verzeichnis gesucht.
                
                
  \par
  
{\bf ErrorLog /var/log/httpd/error\_log} \linebreak 
Der Pfad zu der Fehler-Logdatei des Apache.
                
                
  \par
  
{\bf LogLevel warn} \linebreak 
LogFormat: {\bf UNIX}-Programme können sehr gesprächig sein, was ihren Zustand und eventuelle
Fehler betrifft. Hierfür existiert seit BSD-UNIX der Mechanismus des SYSLOG-Schreibers,
der diese Meldungen protokolliert. Daneben erzeugen wichtige Serverprozesse
aber auch eigene Log-Dateien und geben diesen ein entsprechendes Format. Mittels
LogLevel kann die ''Gesprächigkeit'' des httpd von wenig
({\bf emerg} = emergency; nur ''Lebensbedrohliche'' Meldungen werden generiert),
bis viel ({\bf debug} = debugging; jede Kleinigkeit wird protokolliert) beeinflußt
werden. Standard ist {\bf warn}, was im Normalbetrieb ausreichend ist.
Hinsichtlich des Formates der Log-Dateien hat sich das Common Log Format
(CLF) durchgesetzt, welches von vielen Auswertungsprogrammen unterstützt wird.
Änderungen an den Standardwerten sind nicht ratsam, es sei den, man ist sich
der Auswirkungen bewußt.
                
                
  \par
  
{\bf CustomLog /var/log/httpd.access\_log common} \linebreak 
Diese Log-Datei hat eine Sondestellung, da in ihr sämtliche Zugriffe auf den
Server protokolliert werden.
                
                
  \par
  
{\bf StartServers 5} \linebreak 
{\bf MinSpareServers 5} \linebreak 
Gibt die Anzahl der anfangs zu startenden und danach mindestens verfügbaren
Child-Prozesse an. Der Apache erzeugt nach dem Start die hier angegebene Anzahl
von Subprozessen und teilt die Anfragen danach dynamisch auf diese auf, so daß
eine entsprechende Lastverteilung erfolgt.
                
                
  \par
  
{\bf MaxSpareServers 10} \linebreak 
Wenn die vorhandenen Childprozesse nicht mehr ausreichen, erzeugt der Vaterprozeß
weitere Kinder. Geht die Last dann wieder zurück, können die nunmehr leerlaufenden
Prozesse wieder beendet werden. Wenn mehr als die hier angegebenen Child-Prozesse
im Leerlauf sind, werden sie bis zu diesem Wert hin wieder beendet.
                
                
  \par
  
Die Datei {\bf httpd.conf} bietet noch weitere Einstellungsmöglichkeiten.
Zu Details sei hier auf die entsprechende Literatur und die mitgelieferte Dokumentation
unter {\bf /usr/doc/packages/apache}, sowie die HTML-Online-Hilfe verwiesen.
                
        
        \subsection{Wichtige Webserverparameter} \label{d46e408}
        
                
                
  \par
  
Bei älteren Installationen sind diese Parameter in der Datei
{\bf srm.conf} zu finden, normalerweise stehen diese jedoch auch in der
{\bf httpd.conf}.
                
                
  \par
  
{\bf DocumentRoot ''/usr/local/httpd/htdocs''} \linebreak 
Hier wird das Wurzelverzeichnis für die HTML-Dokumente festgelegt (Document
Root). Alle Anfragen der Clients werden relativ zu diesem Verzeichnis beantwortet
(http://www.your.domain/path\_to\_file/file.html). Bei eine Anfrage
der Form http://www.your.domain wird in diesem Verzeichnis die Index-Datei
(s.u.) gesucht.
                
                
  \par
  
{\bf UserDir public\_html} \linebreak 
Auf öffentlichen Webservern, aber auch in Unternehmen, wird die Möglichkeit
angeboten, Benutzerseiten von Anwendern in das Netz zu stellen. Dazu wird in
deren Home-Verzeichnis ein Unterverzeichnis {\bf public\_html} angelegt
und mit der URL http://www.server.name/\~{}username/ kann dann auf
dieses Verzeichnis zugegriffen werden. Wenn uns der Eintrag {\bf public\_html}
nicht gefällt, so können wir ihn hier ändern.
                
                
  \par
  
{\bf DirectoryIndex index.html} \linebreak 
Mit dieser Einstellung legen Sie fest, welche Dateien als sog. Indexdateien
betrachtet werden. Bei Aufruf einer URL, die nur einen Pfad als Ziel enthält
(z.B. http://www.my.domain/verzeichnis/) sucht der Apache in \verb+<+verzeichnis\verb+>+
nach einer Datei, die einen der unter {\bf DirectoryIndex} aufgeführten Namen
hat. Mehrere Möglichkeiten können durch Leerzeichen getrennt angegeben werden,
z.B. {\bf index.html Index.html index.htm anfang.html}.
                

                
  \par
  
{\bf AddIcon [Pfad\_zum\_Icon]} \linebreak 
Diese Einstellungen betreffen die Zuordnung von Icons zu einzelnen Dateien/MIME-Typen.
Wenn vom Client auf ein Verzeichnis zugegriffen wird, in dem keine Datei {\bf index.html}
(s.o.) liegt, so bekommt er ein Inhaltsverzeichnis angezeigt. Mit den genannten
Einträgen können die auszuliefernden Symbole beeinflußt oder geändert werden.
Im Normalfall sind die voreingestellten Werte aber ausreichend und aufgrund
der weiten Verbreitung des Apache eine Art Quasi-Standard. Man kann aber Symbole
für eigene Dateitypen nach belieben hinzufügen.
                

                
  \par
  
{\bf HeaderName HEADER} \linebreak 
Um dem Anwender eine kurze Erläuterung des Verzeichnisinhaltes zu geben, kann
dort eine README-Datei angelegt werden. Apache stellt diese dann dem
eigentlichen Verzeichnisinhalt voran.
                
                
  \par
  
Mit diesen einfachen Hilfsmitteln kann z.B. eine einfache Erklärung für die
Verzeichnisstruktur eines FTP-Servers aufgebaut werden.
                
                
  \par
  
{\bf AccessFileName .htaccess} \linebreak 
Der Name der bereits erwähnten {\bf .htaccess}-Datei ist ebenfalls frei wählbar.
Inhaltlich entsprechen diese Dateien den Directory-Anweisungen aus der Datei
{\bf httpd.conf} und dürfen demnach die gleichen Inhalte besitzen. Um zu
verhindern, daß Anwender eigenmächtig riskante Einstellungen für ihr {\bf public\_html}
vornehmen ist die Auswertung dieser Dateien aber in
{\bf httpd.conf} in
der Regel gesperrt (s. {\bf AllowOverride}). Ist die Benutzung von {\bf .htaccess}-Dateien
erlaubt, so könnten diese folgenden Inhalt haben:

                

                \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
			   .htaccess
			\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
order deny,allow
deny from all
allow from localhost
			\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

                
  \par
  
Damit erlauben wir nur dem Rechner {\bf localhost} den Zugriff auf unser
Verzeichnis NSG.
                
        
        \subsection{Wichtige Zugriffsberechtigungsparameter} \label{d46e532}
        
                
                
  \par
  
Bei älteren Installationen sind diese Parameter in der Datei
{\bf access.conf} zu finden, normalerweise stehen diese jedoch auch in der
{\bf httpd.conf}.
                

                
  \par
  
Es wird der Zugriff auf Dateien und Verzeichnisse geregelt. Sie
korreliert dabei mit den {\bf .htaccess}-Dateien in den Verzeichnissen, welche
einen User-bezogenen Zugriff gewähren.
                
                
  \par
  
Jede der nun folgenden Anweisungen kann für einzelne Unterverzeichnisse (ab
{\bf DocumentRoot}) gesetzt werden. Hierfür ist das betroffene Verzeichnis jeweils
mit {\bf \verb+<+Directory} ''Pfad''{\bf \verb+>+}
einzuleiten und die Beschreibung mittels
{\bf \verb+<+Directory\verb+>+}
als Block zu beenden. Die Datei {\bf access.conf} beginnt mit einem Abschnitt für
die Grundeinstellungen ab DocumentRoot und setzt dabei restriktive Werte:

                
		\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
			   Auszug httpd.conf
			\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
<Directory>
Options None
AllowOverride None
</Directory>
			\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

                
  \par
  
Hierfür wird die Wirkung von {\bf .htaccess}-Dateien 
für DocumentRoot festgelegt.
Default (des Apache, nicht SuSE!) ist {\bf All}, 
d.h., die {\bf .htaccess}-Dateien werden
gelesen und der komplette Inhalt wird interpretiert.
Wenn auf dem Server das Erstellen privater Benutzerseiten gewünscht ist, dann
ist dieser Wert aber nicht zu empfehlen, da die Anwender sonst z.B. die Nutzung
von eigenen CGI-Scripten einschalten könnten. Daher ist bei SuSE diese Einstellung
auf {\bf None} gesetzt, d.h., {\bf .htaccess}-Dateien werden ignoriert.
                
                
  \par
  
Jetzt werden mit
{\bf \verb+<+Directory ''/usr/local/httpd/htdocs''\verb+>+} die Einstellungen für {\bf /usr/local/httpd/htdocs}
(also wieder unser DocumentRoot)genauer bestimmt.
                
                
  \par
  
{\bf Options Indexes FollowSymLinks} \linebreak 
Mit der Options-Anweisung werden verschiedene Einstellungen eingeleitet.
In diesem Beispiel bedeutet {\bf Indexes}, daß der Server bei Aufruf einer
URL mit einem Directory als Ziel (z.B. http://www.my.domain/Verzeichnis/)
in \verb+<+DocumentRoot/Verzeichnis\verb+>+ eine Datei {\bf index.html} sucht
und diese zurückliefert, ist diese nicht vorhanden, aber mit einer Fehlermeldung
(Document not found) antwortet.
Die Option {\bf FollowSymLinks} erlaubt es, aus dem DocumentRoot mittels
symbolischer Links auszubrechen, sofern die Zugriffsrechte entsprechend gesetzt
sind. Damit können Sie bei Platzproblemen einen Teilbaum Ihres Webservers auf
eine andere Partition oder gar ein über {\bf NFS/SAMBA} gemountes Verzeichnis legen.
                
		\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
			   Auszug httpd.conf
			\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
order allow,deny
allow from all
			\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

                
  \par
  
Hiermit legen Sie fest, wer alles auf Ihren Server zugreifen darf. Zuerst wird
die Reihenfolge bestimmt, in der die folgenden Regeln ausgewertet werden. Bei
{\bf order allow,deny} werden zuerst die unter {\bf allow} aufgeführten Regeln und danach
erst die unter {\bf deny} stehenden angewendet. Der Eintrag {\bf order deny,allow} dreht
diese Reihenfolge um.
                
                
  \par
  
Die einzelnen Regeln besitzen die Grundsyntax {\bf allow|deny from domain|all}
Wollen wir z.B. nur den Rechnern aus unserer eigenen Domain den Zugriff
erlauben, so schreibe man:
                

		\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
			   .htaccess
			\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
order deny,allow
deny from all
allow from my.domain
			\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

                
  \par
  
Um nur bestimmten Domains den Zugriff zu verweigern schreibe man:
                

		\begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
			   Auszug httpd.conf
			\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
order allow,deny
allow from all
deny from bad.domain other.domain 123.123.40
			\end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

                
  \par
  
Wie man sieht ist neben der Angabe des symbolischen Namens auch die Netzadresse
des (un)erwünschten Netzes möglich.
                
        
        \subsection{Zugriffsschutz für Verzeichnisse} \label{d46e683}
        
                
                
  \par
  
Aus der Kombination von {\bf httpd.conf}
(beziehungsweise {\bf access.conf})
und {\bf .htaccess}-Dateien
ergibt sich der Zugriffsschutz für die Verzeichnisstruktur. Um nur einer bestimmten
Benutzergruppe oder einzelnen Anwendern den Zugriff auf Verzeichnisse zu gewähren,
sind folgenden Einstellungen notwendig:
                
                
  \par
  
In der Datei {\bf access.conf} wird das Verzeichnis aus den allgemeingültigen
Einstellungen herausgelöst.
                
                \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        Eintrag in access.conf:\end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
<Directory /usr/local/httpd/htdocs/NSG>
AllowOverride All
AuthName NSG
AuthType Basic
AuthUserFile /etc/httpd/passwd
AuthGroupFile /etc/httpd/group
Require user hebi;nsg
</Directory>
                        \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
                
  \par
  
{\bf AllowOverride} \linebreak 
All ermöglicht es, mittels {\bf .htacces} weitere
Einstellungen innerhalb des Verzeichnisses anzulegen.
                
                
  \par
  
{\bf AuthName NSG} \linebreak 
legt einen Namen für das Login-Feld an.
                
                
  \par
  
{\bf AuthType} \linebreak 
Basic stellt den Authorisierungsmechanismus ein (s.u.).
                
                
  \par
  
{\bf AuthUserFile} \linebreak 
sagt, wo die Paßwortdatei zu suchen ist.
                
                
  \par
  
{\bf AuthGroupFile} \linebreak 
legt fest, in welcher Datei die Usergruppen zu suchen sind.
                
                
  \par
  
{\bf Require user} \linebreak 
legt fest, welche Benutzer (aus AuthUserFile) Zugriff haben sollen.
Der Apache setzt bei der Authorisierung auf verschiedene Mechanismen. Bereits
in der Standardausführung enthält er die Verfahren \linebreak  \linebreak 
{\bf 
Basic (mod\_auth) \linebreak 
dbm (mod\_auth\_dbm) \linebreak 
db (mod\_auth\_db)} \linebreak 
                
                
  \par
  
Weitere Möglichkeiten können über Module eingebunden werden. Die verbreiteste
ist wohl der Weg über eine Datenbank, wobei die für nicht-kommerzielle Zwecke
freie Implementierung {\bf mSQL} bereits als Module {\bf mod\_auth\_msql} zum Standardumfang
des Apache gehört.
                
                
  \par
  
Um die für das Verfahren Basic notwendigen Dateien anzulegen benötigt
man das Programm {\bf htpasswd} und einen beliebigen Editor. Das Anlegen
einer Paßwortdatei erfolgt mit \linebreak  \linebreak {\bf 

        htpasswd -c [Pfad\_zur\_Datei] Username} \linebreak  \linebreak 
Danach kann ohne den Schalter {\bf -c} ein neuer Benutzer angelegt werden.
Hierbei wird der bei UNIX standardmäßig implementierte crypt(3)-Mechanismus
verwendet. Das Ergebnis sieht dann wie folgt aus: \linebreak  \linebreak {\bf 

nobody:8Y0H8cYsTFzNw \linebreak 
hhebi:wN95S.UxOOZH6 \linebreak 
hhe:.NQ/RSk5MnfvQ} \linebreak  \linebreak 
                
                
  \par
  
Für eine Gruppendatei benötigt man lediglich einen Editor wie z.B. den {\bf vi}: \linebreak  \linebreak {\bf 
admin:hebi he \linebreak 
other:he nobody} \linebreak  \linebreak 
Im Verzeichnis (hier: {\bf /usr/local/httpd/htdocs/NSG}) kann mit der Datei
{\bf .htaccess} der Zugriff weiter kontrolliert werden: \linebreak  \linebreak {\bf 

Satisfy All \linebreak 

Order deny,allow \linebreak 

deny from all \linebreak 

allow from my.domain} \linebreak  \linebreak 
Damit können jetzt nur noch Clients aus der Domain {\bf my.domain} auf das
Verzeichnis zugreifen. Ersetzt man bei {\bf Satisfy} den Wert {\bf All}
durch {\bf Any} ist aus der Domain {\bf my.domain} der Zugriff ohne Einschränkung
erlaubt, alle anderen Rechner benötigen eine gültige Kombination aus Username
und Password.
                
        
\section{Aufgaben} \label{d46e860}
        
        
        \newcounter{d6e865} 
                  \begin{list}{\arabic{d6e865}}
                  {\usecounter{d6e865}}
        
                
	\item 
Installieren Sie den Apache von der CD, indem Sie {\bf YaST} benutzen. Kontrollieren
Sie, ob sich alle Dateien an den richtigen Orten befinden. \linebreak  \linebreak 
                
                
	\item 
Starten Sie den Apache über das Script {\bf /etc/rc.d/apache}. Was müssen
Sie beachten? Wie können Sie verhindern, daß der Apache beim Hochfahren des
Rechners gestartet wird? \linebreak  \linebreak 
                
                
	\item 
Ändern Sie folgende Einstellungen in der Datei {\bf httpd.conf}: \linebreak 


{\bf ServerName = wwwXY.nsg.edu}
        (Wobei XY Ihrer Platznummer entspricht) \linebreak 

{\bf ServerAdmin = webmaster@wwwYX.nsg.edu} \linebreak 

Was müssen Sie beachten, damit diese Einstellungen auch funktionieren? \linebreak  \linebreak 
                
                
	\item 
Ändern Sie folgenden Einstellungen:

                        \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
                                   Änderungen in httpd.conf
                                \end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
StartServer = 10
MinSpareServers = 15
                                \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}

Stoppen Sie den Apache und starten Sie ihn erneut. Wie können Sie die Auswirkungen
Ihrer Änderungen kontrollieren und wie sehen diese aus? \linebreak  \linebreak 
                
                
	\item 
Erzeugen Sie im ''DocumentRoot'' ein Verzeichnis {\bf Eigene\_Dateien}
und erstellen Sie darin eine Datei {\bf index.html}. Benutzen Sie hierfür
die Vorlage {\bf /home/ablagen/ZENTRAL/html\_body.html}. Arbeiten Sie dabei
als root. \linebreak  \linebreak 
                
                
	\item 
Versuchen Sie, mittels Netscape die eben erstellte Datei aufzurufen.
Benutzen Sie dabei sowohl eine absolute URL (http://localhost/Eigene\_Dateien/index.html)
als auch den einfachen Verzeichnisaufruf (http://localhost/Eigene\_Dateien/).
Erfolg? \linebreak  \linebreak 
                
                
	\item 
Ergänzen Sie die Voreinstellungen für Indexdateien um die Einträge {\bf index.htm}
und {\bf anfang.html}. Erzeugen Sie durch Kopieren diese Dateien in {\bf Eigene\_Dateien}
und verändern Sie diese, so daß man einen Unterschied erkennt. Versuchen Sie
auf http://localhost/Eigene\_Dateien/ mit dem Netscape zuzugreifen
und stellen Sie fest, welche Datei angezeigt wird. Verändern Sie die Reihenfolge
der Indexdateien in {\bf httpd.conf} und versuchen Sie es erneut. Was stellen
Sie fest? \linebreak  \linebreak 
                
                
	\item 
Legen Sie einen Benutzer ''Peter Maier'' (Username: pmaier, Homeverzeichnis: /home/pmaier)
an und erzeugen Sie ein Unterverzeichnis {\bf /home/pmaier/public\_html}.
Erzeugen Sie eine Datei {\bf index.html} in diesem Unterverzeichnis
(benutzen Sie hierfür wieder die Vorlage {\bf html\_body.html}) und versuchen
Sie, mit Netscape auf diese zuzugreifen. \linebreak  \linebreak 
                
                
	\item 
Ergänzen Sie die Datei {\bf httpd.conf} um folgende Zeilen:
                        \begin{tabular}{|l|}
                  \hline
                  \begin{tt} 
        
                                   Ergänzung in httpd.conf
                                \end{tt} \\ 
                  \hline
                  \begin{minipage}{130mm} 
                  \begin{scriptsize} 
                  \begin{verbatim} 
        
<Directory /usr/local/httpd/htdocs/NSG>
        AllowOverride All
        AuthName NSG
        AuthType Basic
        AuthUserFile /etc/httpd/passwd
        AuthGroupFile /etc/httpd/group
        Require user hebi nsg
</Directory>
                                \end{verbatim} 
                  \end{scriptsize} 
                  \end{minipage} \\
                  \hline
                  \end{tabular}
Legen Sie die darin beschriebenen Paßwort- und Gruppendateien mit den entsprechenden
Benutzern an. Starten Sie den Apache neu und versuchen Sie, auf das Verzeichnis
zuzugreifen. \linebreak  \linebreak 
                
        \end{list}

	\ref{inhalt.tex}


	\end{document}
	
