Kategorien
Domain und Hosting Security

Dateirechte ändern

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

Dateirechte ändern
Über FTP die Dateirechte auf dem Server ändern

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:

  1. FTP-Client öffnen
  2. Mit dem Server verbinden
  3. Verzeichnis oder Datei anwählen
  4. Rechtsklick
  5. 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.

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 kann chmod auf alle Dateien und Verzeichnisse anwenden.  Der folgende Workshop zeigt, wie die Rechteänderung in der Praxis funktioniert.

Workshop: Verzeichnis zum Speichern freigeben

chmod
Das Speichern im Verzeichnis /var/www ist gescheitert – vorerst.

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.

Kommentar verfassen