Wie kann ich PHP und CGI-Skripte nutzen?

Grundsätzlich können Sie innerhalb Ihrer Homepage auf dem Webserver userpages.uni-koblenz.de sowohl CGI-Skripte als auch PHP-Skripte genutzt werden.

  • Dateien, die auf .cgi enden und Ausführrechte besitzen, werden mit den Rechten des Skript-Besitzers ausgeführt.
  • Dateien, die auf .php oder .php5 enden, werden vom PHP-Interpreter ausgeführt. Entgegen der üblichen Arbeitsweise von Webservern wird aber auch dieser Prozess mit den Rechten des Skript-Besitzers gestartet.

Zur Sicherheit

Oft besteht die Notwendigkeit, die Quellen der CGI- oder PHP-Skripte vor der Einsichtnahme fremder Benutzer zu schützen, weil z.B. Passworte für Datenbank-Server dort aufgeführt sind. Im folgenden werden die Mindestbedingungen zur Ausführung von Skripten aufgeführt.

CGI-Skripte

... benötigen mindestens Lese- und Ausführrechte für den Besitzer des Skripts. Das Verzeichnis, das das Skript enthält, muss mindestens Ausführrechte für den Benutzer wwwrun haben. Gleiches gilt auch für alle Vaterverzeichnisse bis zum Heimatverzeichnis.

PHP-Skripte

... benötigen mindestens Lese-Rechte für den Besitzer des Skripts. Da im Normalfall das eigene Home-Verzeichnis nur für den Eigentümer selbst les-  und schreibbar ist, muß über ACLs (siehe nfs4_acl) dem Benutzer wwwrun als auch nobody Zugriff auf die PHP-Datei (idR. index.php) und alle Vaterverzeichnisse haben, die nicht für alle Nutzer zugänglich und lesbar sind.   Da PHP eine Seite wie index.php unter den Rechten des Eigentümers ausgeführt wird, reicht normalerweise das Setzen von den unten angegebenen ACLs für eben diese eine Datei und den Vaterverzeichnissen. Greift index.php dann auf weitere Seiten des Benutzers zu, erfolgt dies mit den Rechten des Eigentümer. Daher reicht dann das einfache Leserecht für den Eigentümer.

Für das Anpassen der Rechte des Home- und public_html-Verzeichnisses  lautet die benötigte nfs4-ACL RX, für die Datei selbst reicht ein R.

Die Kommandos zum Setzen  der benötigten ACLs z.B. auf dem öffentlich via ssh zugänglichen Rechner linux.uni-koblenz.de sehen wie folgt aus. Es wird davon ausgegangen, das die Datei index.php im Ordner ~/public_html  die Startseite der eigenen Homepage darstellt:

$ nfs4_setfacl -a  A::wwwrun@linuxdc.uni-koblenz.de:RX ~
$ nfs4_setfacl -a  A::nobody@linuxdc.uni-koblenz.de:RX ~
$ nfs4_setfacl -a  A::wwwrun@linuxdc.uni-koblenz.de:RX ~/public_html
$ nfs4_setfacl -a  A::nobody@linuxdc.uni-koblenz.de:RX ~/public_html
$ nfs4_setfacl -a  A::wwwrun@linuxdc.uni-koblenz.de:R  ~/public_html/index.php
$ nfs4_setfacl -a  A::nobody@linuxdc.uni-koblenz.de:R  ~/public_html/index.php

Die Gruppenrechte eines Verzeichnisse können wie folgt gesetzt werden:
chmod g+rx <verzeichnis>

 

Das das Skript enthaltende Verzeichnis muss mindestens Ausführrechte für die Benutzer wwwrun und nobody haben. Gleiches gilt auch für alle Vaterverzeichnisse bis zum Heimatverzeichnis.

.htaccess

...-Dateien zur Konfiguration von Authentifizierungseigenschaften o.ä. müssen mindestens Leserechte für den Benutzer wwwrun haben. Das die Datei enthaltende Verzeichnis muss mindestens Ausführrechte für den Benutzer wwwrun haben. Gleiches gilt auch für alle Vaterverzeichnisse bis zum Heimatverzeichnis.