Winzig-Web
tHTTPd
Betreten verboten
Auch wenn tHTTPd nicht im chroot-Gefängnis läuft, begrenzt es den Zugriff auf Dateien und Ordner, die unterhalb seines Startverzeichnisses liegen. Abbildung 3 zeigt den Versuch, das Verzeichnis kein_chartsdreck zu öffnen, das einen Symlink mit Ziel außerhalb des Startverzeichnisses darstellt. Folglich gibt tHTTPd den HTTP-Fehler 403 ("forbidden") zurück – hier ist der Zugang verboten. Auch den Versuch, das Startverzeichnis durch den Eintrag .. (übergeordnetes Verzeichnis) zu verlassen, unterbindet der Server.
Beim Starten des Web-Servers fällt auf, dass sich das Programm sofort vom kontrollierenden Terminal abkoppelt und im Hintergrund weiterläuft, wie es sich für einen ordentlichen Daemon gehört. Wie lässt sich der Server aber wieder beenden? Die nötige Information, die ProzessID, beschaffen wir uns mit dem ps-Kommando, das eine Liste der laufenden Prozesse zurückgibt. Zudem filtern wir die Ausgabe mit grep, so dass nur noch Einträge zu sehen sind, die die Zeichenkette thttpd enthalten, und schicken dem Prozess das Beendigungssignal mit dem kill-Kommando an die ermittelte Prozess-ID.
chris@camera:~ $ ps axc | grep thttpd 2752 ? S 0:00 thttpd chris@camera:~ $ kill 2752
Wer nicht erst umständlich mit ps und grep hantieren will, kann dem thttpd-Aufruf mit der Option -i pid-datei eine Datei mitgeben, in die der Server seine Prozess-ID schreibt. In dem Fall beschränkt sich das Beenden auf das Kommando kill $(cat pid-datei).
Logbuch
Da wir im normalen Betrieb gerne wissen wollen, was sich auf unserem Server tut, gibt es die Option -l logdatei, mit der Zugriffe auf den Server protokolliert werden. Im folgenden Beispiel wurde tHTTPd auf Port 4242 mit dem Freigabeordner /home/chris/public gestartet; die Logdatei heißt /home/chris/thttpd.log. Danach verfolgen wir die Einträge, die der Server in die Logdatei schreibt.
chris@camera:~ $ thttpd -p 4242 -d ~/public -l ~/thttpd.log chris@camera:~ $ tail -f ~/thttpd.log 10.0.0.200 - - [18/Jun/2002:15:03:22 +0200] "GET / HTTP/1.1" 200 50000 "" "Mozilla/5.0 (compatible; Konqueror/2.2.1; Linux)" 10.0.0.200 - - [18/Jun/2002:15:03:27 +0200] "GET /favicon.ico HTTP/1.1" 404 0 "" "Mozilla/5.0 (compatible; Konqueror/2.2.1; Linux)"
Zwei Zugriffe vom Rechner mit der IP-Adresse 10.0.0.200 haben wir zu verzeichnen, jeweils mit Konqueror als Browser. Die erste Anfrage liest den Inhalt des Startverzeichnisses. Vom Browser aus sieht man nicht, dass / in Wirklichkeit /home/chris/public ist. Diese Information soll auch gar nicht nach außen gelangen. Die zweite Anfrage versucht, die Datei /favicon.ico zu lesen. Da diese nicht existiert, gibt der Server den HTTP-Fehler 404 ("not found", "nicht gefunden") zurück.



