UNIX: Grundlagen Zugriffsrechte
[Dieser Artikel wird noch überarbeitet]
Bei jedem Zugriff eines Benutzers auf eine Datei gibt es drei verschiedene Kombinationsmöglichkeiten:
1. Die Benutzernummer des Benutzers ist identisch mit der Benutzernummer, die im Dateikopf gespeichert ist. In diesem Fall ist man der Besitzer (engl. owner, fälschlich auch user genannt) der Datei.
2.Sofern die Benutzernummern nicht gleich sind, wird überprüft, ob die Gruppennummer des Benutzers und der Datei übereinstimmen. Ist dies der Fall, so gehört der Benutzer zur gleichen Gruppe wie die Datei.
3.In allen anderen Fällen (weder Benutzernummer noch Gruppennummer sind identisch) spricht man vom "Rest der Welt" (engl. others), also der Menge der Benutzer, die nicht Besitzer der Datei sind und auch nicht zur gleichen Gruppe gehören.
[Bild]
Für alle drei Kategorien von Benutzerzugriffen auf eine Datei existieren prinzipiell die gleichen Zugriffsrechte.
Es können jeweils drei verschiedene Zugriffsrechte verteilt oder vorenthalten werden:
[Bild]
Aus der Kombination von Benutzerkategorien und Zugriffsrechten ergeben sich neun verschiedene Rechte, die für jede Datei gespeichert sind.
1.Lesbarkeit, Schreibbarkeit, Ausführungsberechtigung für Besitzer der Datei.
2.Lesbarkeit, Schreibbarkeit, Ausführungsberechtigung für die Gruppe, zu der die Datei gehört.
3.Lesbarkeit, Schreibbarkeit, Ausführungsberechtigung für den "Rest der Welt".
Ändern von Zugriffsrechten
Jede Datei kommt mit bestimmten voreingestellten Zugriffsrechten "zur Welt". Es gibt Möglichkeiten und Wege, diese voreingestellten Zugriffsrechte seinen persönlichen Bedürfnissen anzupassen. Aber viel häufiger kommt es vor, dass nachträglich die existierenden Zugriffsrechte geändert werden müssen.
Dann greift man auf das Kommando chmod(engl. change mode)zurück. chmod kennt zwei verschiedene Aufrufformen. Die erste wird die sog. symbolische Form genannt. Bei der zweiten Form arbeitet man mit Oktalzahlen, also Zahlen, die auf der Basis 8 aufbauen, und nicht auf der Basis 10, wie bei unserem normalen Dezimalsystem.
Das dies keine Schwierigkeit darstellen muß, sieht man in der nächsten Grafik:
[Bild]
Das Kommando chmod kann nur vom Besitzer der Datei verwendet werden, um Zugriffsrechte zu ändern. Die einzige Ausnahme von dieser Regel bildet der Systemadmin. Er kann Zugriffsrechte von allen Dateien ändern.
chmod Syntax in PHP
Diese Funktion ändert die Zugriffsrechte der Datei spezifiziert in filename in die Zugriffsrechte um, die in mode spezifiziert sind.
Bedenken Sie, dass mode nicht automatisch für einen Oktalwert gehalten wird. Um sicher zu gehen, dass die Operation wie erwartet verläuft, sollten Sie mode mit dem Prefix NULL (0) versehen:
chmod ("/somedir/somefile", 755); // dezimal; möglicherweise falsch chmod ("/somedir/somefile", "u+rwx,go+rx"); // String; falsch chmod ("/somedir/somefile", 0755); // oktal; richtiger Wert von mode
Der mode Parameter besteht aus drei oktalen Nummernteilen, welche die Zugriffsbeschränkungen für den Eigentümer, die Benutzergruppe des Eigentümers, und allen anderen in dieser Reihenfolge spezifiziert. Eine Komponente kann mittels Addition derbenötigten Rechte für die gewünschten Benutzer berechnet werden. Die Zahl 1 bedeutet das Recht zum Ausführen, die Zahl 2 bedeutet das Recht zum Schreiben der Datei und mit der Zahl 4 machen Sie die Datei lesbar. Addieren Sie diese Zahlen, um die benötigten Rechte zu spezifizieren. Weitere Informationen zu den Modi finden Sie auf Unix Systemen mit 'man 1 chmod' and 'man 2 chmod'.
// Lesen und Schreiben für den Eigentümer, nichts für alle anderen chmod ("/somedir/somefile", 0600); // Lesen und Schreiben für den Eigentümer, Lesen für alle anderen chmod ("/somedir/somefile", 0644); // Alles für den Eigentümer, Lesen und Ausführen für andere chmod ("/somedir/somefile", 0755); // Alles für den Eigentümer, Lesen und Ausführen für die // Benutzergruppe des Eigentümers chmod ("/somedir/somefile", 0750);
Anmerkung: Der aktuelle Benutzer ist der, unter dem PHP läuft. Das ist unter Umständen nicht der Benutzer, den Sie für normale Shell- oder FTP-Zugriffe benutzen.
.... to be continued :wink: