Eigene CGI-Scripte verwenden

 

Die Erstellung und Einbindung von CGI-Scripten ist keine triviale Aufgabe. Um Ihnen die Sache etwas zu erleichtern, haben wir im Folgenden einige Hinweise für Sie zusammengestellt:

Ihr CGI-Verzeichnis, Zugriffsrechte

In cgi-bin unterhalb Ihres Homeverzeichnisses legen Sie Ihre CGI-Scripte ab. Als kleines Beispiel haben wir Ihnen dort schon ein Script abgelegt, das Ihnen nur die richtigen Dateiberechtigungen demonstrieren soll: date.cgi. Testen Sie es ruhig aus, indem Sie im Browser

www.ihredomain.de/cgi-bin/date.cgi

eingeben. Sie sollten das aktuelle Datum (des Webservers) sehen, dann ist alles mit Ihrem CGI-Zugriff richtig eingerichtet. Verwenden Sie bitte einmal die entsprechende Funktion Ihres FTP-Clients, um sich die Berechtigungen dieser Datei anzuzeigen (bei WS_FTP ist das der Button "DirInfo"). Sie werden sehen, daß das Script date.cgi für den User und die Gruppe Ihres Benutzerlogins lesbar und ausführbar ist, aber nur für den User beschreibbar.

Sie können eigene Scripte per FTP (bitte im Textmodus!) in das CGI-Verzeichnis einstellen, vergessen Sie bitte aber nicht, die Rechte für die Scripte danach genauso zu setzen wie das bei unserem Beispiel der Fall ist (sie können anderen Usern aber den Zugriff verwehren, indem Sie das "read" und "execute" für andere wegnehmen (z.B. rwxr-x---). Das tun Sie bei WS_FTP 4.5, indem Sie auf der entsprechenden Datei die rechte Maustaste drücken und dann im Kontextmenü chmod (UNIX) auswählen. Der folgende Screenshot zeigt Ihnen, wie Sie die Rechte dann setzen müssen:

Der Server wird das Script aus Sicherheitsgründen nur ausführen, wenn ...

  • das Script Ihrem Benutzer und dessen Gruppe gehört.
  • das CGI-Verzeichnis Ihrem Benutzer gehört.
  • weder das Script noch das Verzeichnis von anderen Usern oder Ihrer Gruppe beschreibbar sind.

 

Wenn Sie eine andere Datei irgendwo in Ihrem Script aufrufen oder einbinden wollen und Sie können keinen URL-Pfad verwenden, sondern müssen einen Pfad im Dateisystem angeben, so lokalisieren Sie bitte das Root-Verzeichnis Ihres Webservers (/public_html) über die Umgebungsvariable DOCUMENT_ROOT, also z.B. mit $ENV{DOCUMENT_ROOT} in PERL.

Ändern Sie also beispielsweise folgenden Pfad:

Alt: /home/users/ihrname/public_html/seite.html

Neu: $ENV{DOCUMENT_ROOT}/fact.html


Verfügbare Scriptsprachen, wichtige Pfade

Sie können für Ihre CGI-Scripte mehrere Programmier- oder Scriptsprachen verwenden, deren Interpreter Sie unter den folgenden Pfaden finden:

  • PERL 5.8: /usr/bin/perl
  • Python 2.3: /usr/bin/python
  • GNU bash 2.05: /bin/bash

 

... und weitere, fragen Sie uns einfach, wenn Ihre bevorzugte Sprache nicht in der Liste steht. Bedenken Sie bitte, daß der Server auf einem UNIX-System läuft. 

Wenn Sie in C oder C++ gescriebene CGI-Scripte verwenden möchten, müssen Sie diese zuerst unter Linux (ELF, glibc2) kompilieren. Das können Sie mangels Shell-Zugriff nicht auf dem Server selbst tun, bei Bedarf sind wir Ihnen gerne behilflich. Versuchen Sie, wenn möglich schon eine kompilierte Version des Programmes zu bekommen.

Wenn Sie externe Programme aufrufen müssen, finden Sie sie an folgenden Stellen:

  • sendmail: /usr/sbin/sendmail
  • date: /bin/date

 


Fehlerursachen und -meldungen

Erfahrungsgemäß sind bei CGI-Scripten aus CGI-Bibliotheken und vor allem bei selbstgebauten Scripten immer noch ein paar Fehlerchen (falsche Pfade, Syntaxfehler) etc. auszumerzen, bis das Script läuft. Der WWW-Server zeigt dann beim Versuch, das Script auszuführen, in der Regel nur lapidar "Internal Server Error" oder etwas ähnliches an.

Damit Sie besser auf Fehlersuche gehen können, können Sie sich mit dem CGI-Script

www.ihredomain.de/cgi-bin/admin/logview

... die letzten 30 Zeilen des Fehlerprotokolls des Webservers ansehen (das Script ist mit Username und Paßwort geschützt, da das Protokoll außer Sie niemanden etwas angeht!). Möglicherweise finden Sie hier die Ursache für den Fehler.

Wenn nicht:

  • Prüfen Sie, ob der Pfad zum Interpreter richtig angegeben ist. In der ersten Zeile eines Scriptes steht hinter einem Doppelkreuz und einem Ausrufezeichen immer der Pfad zum entsprechenden Interpreter:
  • #!/usr/bin/perl
    (...)
  • Haben Sie die Datei im Textmodus aufgespielt? PERL kommt z.B. mit DOS/Windows-Zeilenumbrüchen häufig nicht zurecht.
  • Vielleicht hat das CGI-Script die richtigen Rechte, nicht aber andere Dateien, die Sie in dem Script öffnen oder beschreiben möchten (bzw. deren Verzeichnisse)?
  • Am Anfang der Ausgabe muss immer ein gültiger Content-Type-Header stehen, gefolgt von einer Leerzeile! Beispiel:
    #!/bin/sh
    echo Content-Type: text/html
    echo
    (...)

 

Im gegebenen Rahmen können wir Ihnen hier keine Anleitung für CGI-Programmierung bieten. Weiter unten auf dieser Seite finden Sie nützliche Links, wenn Sie weitere Informationen brauchen.


Zum Thema Sicherheit

Wir können Sie nicht daran hindern, absichtlich oder unabsichtlich mit unsicheren oder fehlerhaften CGI-Scripten im Extremfall die Sicherheit und auch die Stabilität des WWW-Servers zu gefährden. Ihre Scripte laufen zwar mit begrenzten Rechten, aber dennoch können sie z.B. Mails verschicken, tausende von Dateien anlegen und externe Programme starten.

Wir behalten uns daher das Recht vor, Ihre CGI-Scripte auf Sicherheitslücken oder sicherheitskritische Fehler hin zu prüfen und sie gegebenenfalls auch zu deaktivieren, sollten wir ein Problem entdecken. Wir würden Sie jedoch sofort kontaktieren, Ihnen mitteilen, warum wir etwas unternommen haben und Hilfestellung zur Lösung des Problems geben.

In diesem Zusammenhang bitten wir Sie inständig, niemals das Paßwort für Ihren FTP-Zugang an Dritte weiterzugeben. Wenn Sie nicht sicher sind, ob Ihr Paßwort noch geheim ist, benachrichtigen Sie uns bitte sofort, dann vereinbaren wir ein neues. In den Händen von Spezialisten ist ein FTP-Zugang und ein WWW-Server mit CGI-Rechten völlig ausreichend für eine massive Attacke gegen Sie, uns oder andere Server im Internet.


Weitere Informationen

Weitere Informationen rund um die CGI-Grogrammierung finden Sie unter anderem bei folgenden Adressen:

mehr SELFHTML - CGI/Perl
Die bekannte HTML-Anleitung von Stefan Münz widmet ein ganzes Kapitel der CGI-Programmierung in PERL und hat viele weitere nützliche Hinweise und Links zu CGI-Bibliotheken parat.

mehr REALM of CGI
Dieses deutschsprachige Angebot umfaßt Anleitungen, Scripte (hauptsächlich PERL) und andere nützliche Hinweise rund um HTML und Internetdesign.

mehr Matt´s Script Archive
Die PERL-Scripte von Matt Wright sind mit Sicherheit die beliebtesten im ganzen Netz (englisch).

mehr Apache
Nützliche Hinweise für CGI-Programmierer finden Sie auch im Dokumentations-Bereich dies Apache Webservers, der auch bei minuskel im Einsatz ist.

minuskel screen partner GmbH, Bouchéstr. 12, 12435 Berlin, Telefon: +49 (30) 809 49-0