Ob mit WordPress oder einem anderen CMS, irgendwann stößt jeder Webmaster auf das Thema Dateirechte. Warum es die überhaupt gibt? Um Verzeichnisse und Dateien vor Zugriffen zu schützen, zum Beispiel den Uploadordner! Die Rootserver-Admins kennen sich (hoffentlich) gut mit dem Rechtesystem aus, aber auch für normaler Anwender ist es keine Hexerei. Schon mit einem FTP-Client lassen sich die Rechte auf einem Server ändern!
Inhalt
Änderung von Rechten via FTP
[iheb_oxi_hover id=“1927″]
Die Änderung von Rechten ist mit einem FTP-Client wie FileZilla oder FireFTP möglich. Das Bild zeigt die Rechteverwaltung in fireFTP. So wird sie aufgerufen:
- FTP-Client öffnen
- Mit dem Server verbinden
- Verzeichnis oder Datei anwählen
- Rechtsklick
- Im aufklappenden Kontextmenü „Eigenschaften“ auswählen
Das Eigenschaften-Fenster ist offen? OK, dann geht es weiter … wodurch unterscheiden sich Eigentümer, Gruppe und Übrige?
Eigentümer, Gruppe und Übrige
Auf einem Computer tummeln sich unterschiedlichen „Personen“. Da gibt es drei Haupt-Kategorien von Personen, und zusätzlich den Root, der alles darf.
- Eigentümer, der owner oder user (u). Bei fireFTP heißt der Eigentümer anders, nämlich Besitzer.
- Gruppe, die group (g)
- Übrige, others (o)
Root:
Der System-Administrator hat automatisch alle Rechte für das gesamte Dateisystem. Wer sich als Root einloggt, trägt die hohe Verantwortung eines Rootserver-Admins. Wenn du normalen Webspace oder einen Managed Server gemietet hast, kannst du dich nicht als Root einloggen – und weniger kaputt machen 😉 .
Besitzer (Eigentümer, Owner, User):
Der Benutzer, der einen Ordner oder eine Datei erstellt hat, ist automatisch dessen Besitzer. Jedenfalls, solange der Root das nicht ändert.
Gruppe (Group):
Mehrere Benutzer können einer Gruppe angehören, wodurch sie die selben Rechte der Gruppe erlangen. Auch das kann der Root einstellen.
Andere (Others): Alle Benutzer, die weder der Besitzer eines Ordners oder einer Datei sind, noch einer Gruppe angehören, für die die Zugriffsrechte eines Ordners oder einer Datei definiert wurden. Das heißt konkret: Die „anderen Benutzer“ sind ganz einfach die Besucher deiner Website.
Leserecht, Schreibrecht, Ausführrecht
Diese drei Personen dürfen drei Dinge tun
- lesen, read (r)
- schreiben, write (w)
- Ausführen, execute (x)
In der Praxis werden die Rechte in einem Rechtestring aufgeschrieben, sowas hier:
rwxrwxrwx
Gelesen wird der Rechtestring in „3er-Packungen“ von links nach rechts für Eigentümer, Gruppe und Übrige. Das bedeutet: rwx für Eigentümer, rwx für Gruppe, rwx für Übrige.
Zusammenfassung der Rechteverteilung im obigen Beispiel: Alle dürfen Lesen, Schreiben, Ausführen.
Rechteverwaltung als Zahlenwerte
Besitzer | Gruppe | Übrige | |
Lesen | 4 | 4 | 4 |
Schreiben | 2 | 2 | 2 |
Ausführen | 1 | 1 | 1 |
Die Rechtevergabe kann auch mit Zahlenwerten eindeutig hinterlegt werden.
Dabei müssen die Summen in jeder Spalte addiert werden.
777 bedeutet, dass alle Rechte für alle Personen vergeben sind.
755 schließt die Schreibrechte für Gruppe und Übrige aus.
444 lässt nur Leserechte für alle Personen zu.
Standard-Rechte in Zahlenform
Wie die Rechte vergeben werden, hängt immer vom Zweck ab. Ideal ist das Prinzip „So viel Rechte wie nötig, so wenig wie möglich“. Als Standard im Web gilt:
- Ordner erhalten die Rechte 755
- Dateien erhalten die Rechte 644
Was du niemals tun solltest, auch wenn das in Foren zur Lösung von Probleme verbreitet wird: einfach mal einen Ordner oder gar alles dauerhaft auf 777 setzen. Schneller als du gucken kannst, bist du dann nämlich auf 200!
Dateirechte 200
Bei einem Schadcode-Befall setzt ein Webprovider die Dateirechte über den chmod-Befehl gerne pauschal auf 200 herunter. In diesem Falle besteht zwar noch ein FTP-Zugriff auf die Dateien, im Internet sind die Seiten aber nicht mehr erreichbar.
[iheb_oxi_hover id=’1789′]
Rechte ändern über das Terminal
Die vorherigen Abschnitte waren für Otto Normaluser. Wenn du hier weiterlesen willst, muss du ein Nerd sein, und selbst einen Server betreiben, zum Beispiel auf einem lokalen LAMP-System. In diesem Fall änderst du die Rechte nicht via FTP-Client, sondern über die Kommandozeile im Terminal, das jeder Linux -PC besitzt.
Verzeichnis im Terminal aufrufen und Rechte prüfen
Rufe das Terminal auf und gib ein:
cd /home
cd steht für change directory, also „Verzeichnis wechseln“. Jetzt sind wir im Verzeichnis /home. Als nächste Aktion schauen wir nach, wie die Rechte aktuell vergeben sind, und zwar mit diesem ls-Befehl:
ls -l
… und siehe da. Unter der Anzahl der Dateien stehen die Rechte. Das d vorne ignorieren wir mal. Das Ergebnis ist eindeutig. Im Verzeichnis /home ist Lesen, Schreiben und Ausführen für Eigentümer, Gruppen und Andere erlaubt:
drwxrwxrwx
Stünde zum Beispiel rwxr-xr-x
im Rechtestring, dann wäre dem Eigentümer alles erlaubt, Gruppen und Übrigen aber nur Lesen und Ausführen.
Standard-Rechte in String-Form:
- 0: — (0+0+0) kein Zugriff
- 1: –x (0+0+1) nur Ausführen
- 2: -w- (0+2+0) nur Schreiben
- 3: -wx (0+2+1) Schreiben und Ausführen
- 4: r– (4+0+0) nur Lesen
- 5: r-x (4+0+1) Lesen und Ausführen
- 6: rw- (4+2+0) Lesen und Schreiben
- 7: rwx (4+2+1) Lesen, Schreiben und Ausführen
chmod und chown
Nun ist das ja erbaulich, die Rechte anzusehen, aber der Admin will bzw. muss die Rechte auf einem Server ändern können. Dafür gibt es die Befehle chown und chmod.
- chown steht für „Eigentümer ändern“
- chmod steht für „Zugriffsrechte auf Dateien ändern“ Der Befehl
chmod
kann von einem normalen Benutzer für jede Datei und jedes Verzeichnis, dessen Besitzer er ist, ausgeführt werden. Der Root kannchmod
auf alle Dateien und Verzeichnisse anwenden. Der folgende Workshop zeigt, wie die Rechteänderung in der Praxis funktioniert.
Workshop: Verzeichnis zum Speichern freigeben
Das Bild zeigt ein typisches Problem auf einem Ubuntu-PC. Der Versuch, eine Datei außerhalb des Heimatverzeichnisses /home zu speichern, ist fehlgeschlagen. Nun soll die Datei test.php aber nicht zum Spaß in den Ordner /var/www gespeichert werden, sondern zur Überprüfung der PHP-Version im Rahmen einer LAMP-Installation! Was tun? Die Rechte im Verzeichnis /var/www müssen so geändert werden, dass wir etwas speichern = hineinschreiben können.
Rechte abfragen und dokumentieren
Ein häufiger Anfängerfehler ist es, gleich loszulegen, um hinterher nicht mehr zu wissen, was man geändert hat. Deswegen: Zuerst den Ausgangszustand der Rechtevergabe für das Verzeichnis /var/www abfragen und mit Zettel und Stift notieren:
ls -l /var/www
Mein Computer spuckt diesen Rechtestring aus:
rw-r–r–
Mit chmod Rechte ändern
Mit chmod werden die Rechte eines Verzeichnisses oder einer Datei verwaltet, und zwar mit dem chmod-Befehl. Hinweis: In Ubuntu, aber nicht in allen Linux-Systemen, funktioniert der Befehl mit dem Voranstellen von sudo.
Die einfachste Rechtevergabe heißt chmod 777. Damit werden alle Rechte für alle Personen auf dem PC freigeschaltet. Für das betroffene Verzeichnis /var/www geben wir ins Terminal ein:
sudo chmod 777 /var/www
In diesem Zustand kann in das Verzeichnis /var/www geschrieben werden. Die Datei test.php kann gespeichert werden. Nun ist die dauerhafte Einstellung der Rechte 777 aus Sicherheitsgründen unverantwortlich. Was tun? Die Rechte mit chmod wieder zurücksetzen!
Rechte mit chmod wieder zurücksetzen
Aus Sicherheitsgründen werden die Rechte wieder auf den ursprünglichen Zustand zurückgesetzt:
sudo chmod 755 /var/www
So, das war der kleine chmod-Workshop. Wenn er dir gefallen hat, kannst du diese Seite ja mal verlinken. 😉
PS: Wenn du überhaupt keine Ahnung von Linux hast, dann probiere zum Einstieg Ubuntu oder Debian! Diese beiden Systeme sind halbwegs einsteigerfreundlich, und auch die meisten Webserver laufe auf einer der beiden Linuxe.