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.

/srv/dokuwiki/adminwiki/data/pages/a_faq/cgi.txt · Zuletzt geändert: 2018-12-17 15:12 von mga
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0