Darf ich CGI-Scripte ausführen?
Klar! Dabei ist folgendes zu beachten:
- CGI-Scripte dürfen nur im Home-Verzeichnis, also unter $HOME/public_html/ liegen (bzw. in weiteren Unterverzeichnissen unter diesem Pfad).
- CGI-Scripte müssen mit
.cgi
enden und mindestens Rechte 500 haben, d.h. für den Besitzer lesbar und ausführbar sein. - CGI-Scripte laufen unter der Kennung des Users, dem sie gehören. Um dies zu ermöglichen, müssen verschiedene Regeln beachtet werden. Z.B. darf das Skript kein suid oder guid-Bit haben, es darf nur dem User gehören, in dessen Home-Verzeichnis es liegt usw. Die genauen Einschränkungen kann man hier nachlesen: http://httpd.apache.org/docs/suexec.html
Wenn das Script dem User gehört, in dessen Home-Verzeichnis es liegt, und Rechte 500 hat, sollte es keine Probleme geben.
- Da die CGI-Scripte unter User-Rechten laufen, müssen Dateien auch nur für diesen User schreibbar sein. Die beliebte counter.txt muss also nur Rechte 600 und nicht wie früher 666 haben.
- Server-Side-Includes (d.h. Ausfuehren eines CGI-Scriptes innerhalb einer Webseite durch z.B.:)
... Es waren <!--#exec cgi="count.cgi" --> Besucher auf dieser Seite! ...
sind nur möglich, wenn entweder die HTML-Seite das x-Bit gesetzt hat, also Rechte 555 oder 755 hat, oder wenn sie mit .shtml statt .html endet.
- Das CGI-Script muss als erste Zeile, die auf stdout geschrieben wird,
Content-type: text/html
gefolgt von *zwei* Leerzeilen ausgeben. Optional noch mit einem Charset. Für Perl-Scripte beispielsweise durch:
print ("Content-type: text/html;charset=UTF-8\n\n");
oder fuer bash-Scripte mit:
echo -e "Content-type: text/html;charset=UTF-8\n"
- Unser Web-Server ist www-ps.informatik.uni-kiel.de. CGI-Scripte müssen dann also über
http://www-ps.informatik.uni-kiel.de/~username/bla.cgi
referenziert werden.