PHP/Grundlagen der Authentifizierung

Aus Mikiwiki
< PHP
Wechseln zu: Navigation, Suche

Die Authentifizierung von Benutzern kann per Skript ausgeführt werden oder es können die Leistungen des Betriebssystems in Anspruch genommen werden. PHP wurde eigens für den plattformübergreifenden Einsatz entworfen und entsprechend eingeschränkt waren die Einsatzmöglichkeiten bei den Zugriffsrechten.

Das Unix-Rechtesystem

Werden Skripte eigens für Unix-artige Systeme entworfen, so stehen die vollen Zugriffsrechte zur Auswertung zur Verfügung. Das Rechtesystem von Unix kennt drei Stufen: "user", "group" und "other". Jeder Stufe kann für jede Datei eines oder mehrere der folgenden Rechte zugewiesen werden: "r" (lesbar), "w" (schreibbar) und "x" (ausführbar). Verzeichnisse werden analog zu Dateien behandelt und können über identische Rechte verfügen. Dateien innerhalb eines Verzeichnisses erben die Rechte, bis diese ausdrücklich überschrieben werden.

In PHP werden Oktalzahlen mit einer vorangestellten Null geschrieben, also 0444, 0744 oder 0666. Natürlich kann auch immer die dezimale Entsprechung berechnet werden. Da die Zahlenbasis 8 ist, wird der "Zehner" (eigentlich ja die 8) mit 8 multipliziert, der "Hunderter" entspricht also einem "Vierundsechziger" und wird mit 64 multipliziert. Aus oktal 0444 wird dann dezimal 292.

Mit den Funktionen "chmod" und "chgrp" können unter PHP Dateirechte gezielt vergeben werden. Dabei gilt die Regel, dass jeder Benutzer nur Rechte vergeben kann, die gleich oder schlechter als seine eigenen sind. Bei der Ausführung von Skripten ist also der Status entscheidend, unter dem der Webnutzer die PHP-Skripte ausführt. Bei der Apache HTTP Server-Installation unter Linux übernimmt der Nutzer die Besitzer- und Gruppenrechte vom Apache. Webserver sollten mit einem besonderen Konto versehen werden (z. B. "nobody"), dem dann möglichst eingeschränkte Rechte zugeteilt werden. Für die Ausführung von PHP-Skripten genügen Leserechte. Beim Umgang mit den bereits beschriebenen Dateibefehlen werden auch Daten geschrieben, in diesen Fällen muss der Benutzer "nobody" oder "other" auch Schreibrechte erhalten.

Im folgenden Skript kann mit dem zweiten Parameter der Funktion "chmod" experimentiert werden.

<?php
$ok = chmod("data/muster.txt", 0666);
$fp = fopen("data/muster.txt", "w");
fclose($fp);
echo "Status: $ok";
?>
Status: 1

"chgrp" funktioniert analog und stellt Rechte für die aktuelle Gruppe ein. Mit "chown" kann auch der Besitz der Datei übernommen werden, sofern sie keinem Benutzer mit höheren Rechten gehört.