Können heißt nicht immer dürfen. Das gilt nicht nur für die Spesenabrechnung beim Finanzamt. Gerade wenn man Zugriffsrechte und Dateirechte festlegen muss (irreführender Weise auch Schreibrechte genannt), um einen Server oder Inhalte in Computersystemen zu schützen, kommt einem Grundverständnis über das System der Dateirechte fundamentale Bedeutung zu. Dateiberechtigungen sind eine grundlegende Systemeinstellung und wichtiger Sicherheitsaspekt auf jedem Webserver.
Mehr als die Hälfte aller Cyberangriffe auf Webseiten wird aufgrund falsch gesetzter Dateirechte erst möglich gemacht. Grund genug, um sich mit dem ganzen Kram rund um die Buchstaben R, W und X etwas detaillierter zu beschäftigen. Dieser Artikel zeigt dir die Grundlagen der Dateiberechtigungen und erklärt, wie sich Dateirechte auf UNIX-Systemen zusammensetzen. Synonym zum Begriff der „Dateirechte“ werden auch oftmals auch Begriffe wie Verzeichnisrechte, Benutzerrechte oder Systemrechte genannt. Hier bestehen aber durchaus feine Unterschiede.
Was sind Dateirechte und Dateiberechtigungen?
Die Dateirechte (chmod) sind eine wesentliche Komponente virtueller Dateisysteme (Virtual File Systems, VFS) in UNIX-Systemen und deren Derivaten wie Linux, CentOS oder MacOS (Apple). Neben den Dateirechten gehören auch noch der Dateityp, die Dateigröße, ein Zeitstempel (timestamp) sowie Verweise auf den Dateiinhalt zu den Grundinformationen eines VFS. NTFS- und VFAT-Dateisysteme verwalten diese Parameter auf andere Weise, die wir hier nicht genauer behandeln.
Da lizenzfreie Linux-Distributionen auf nahezu jedem Webserver dieser Erde verwendet werden, sind die Dateirechte ein zentraler Aspekt in der Dateiverwaltung auf Servern und in Verzeichnissen. Dabei ergibt sich eine Aufteilung der Dateirechte in drei differente Grundrechte:
- Schreiben (engl. write): Der User/Benutzer darf in die jeweilige Datei schreiben bzw. Dateien und Unterverzeichnisse in dem Verzeichnis erstellen, umbenennen oder löschen sowie deren Dateirechte verändern. Das Schreibrecht wird oftmals durch ein „w“ für englisch write dargestellt („schreiben“, W-Bit).
- Lesen (engl. read): Der User/Benutzer darf aus der Datei lesen oder aus dem Verzeichnis Inhalte auslesen, aber keine Dateirechte dieser Dateien erfahren. Die Leseberechtigung wird durch den Buchstaben „r“ für englisch read („lesen“, R-Bit) dargestellt.
- Ausführen (engl. execute): Der User/Benutzer darf die Datei als Programm ausführen bzw. in das Verzeichnis wechseln und dort Dateien oder Unterverzeichnisse erreichen. Ohne das Lese-Recht darf der Verzeichnisinhalt jedoch nicht ausgelesen werden. Dieses Recht wird oft durch den Buchstaben „x“ für englisch execute („ausführen“) dargestellt und daher auch X-Bit genannt, nicht zu verwechseln mit dem Rapper Xzibit.
Die nachfolgenden Tabellen erklären, wie sich die Oktalwerte für die Dateirechte zusammensetzen. Grundlage bildet der binärwert, der entsprechend in das Oktalsystem umgerechnet wird. Wer sich für die Umrechnung interessiert, sollte einmal in den Erstsemester-Skripten jedes informatikgeprägten Uni-Studiengangs blättern. It’s no rocket science!
Die symbolische Schreibweise der Grundrechte leitet sich aus ihrer obigen Beschreibung ab. Einmal verstanden, ist das Ganze dann durchaus intuitiv! Viel intuitiver wird die Rechteverteilung doch erst mit dem Blick auf die oktale und binäre Zusammensetzung, was die folgende Tabelle eindrucksvoll illustriert:
Zudem existiert eine ausgewählte Reihe an Sonderrechten, die der findige System-Admin für einige Anwendungen berücksichtigen muss (oder zumindest sollte). Als Otto-Normal User sollte man seine Finger von den Sonderrechten lassen, um nicht ahnungslos und unbewusst scheunentorgroße Sicherheitslücken zu erschaffen.
Auch für die Sonderrechte existiert eine Oktalnotation, die vier Ziffern lang ist und der dreiziffrigen Oktalzahl der Basisrechte vorangestellt wird. Auch hier bildet die Summe der Werte wieder die Gesamtrechte. Die Symbole der Sonderrechte erscheinen übrigens an der dritten Stelle der Zugriffsrechte, also dort, wo normalerweise das x (für executable) steht.
Die Set-UID/GID-Rechte werden anstelle des x für den jeweiligen Besitzer bzw. die jeweilige Gruppe angezeigt, das Sticky-Bit anstelle des x für andere. Wenn das entsprechende Ausführrecht gesetzt ist, wird ein Kleinbuchstabe verwendet, ansonsten ein Großbuchstabe. Ein Beispiel ist z.B. das Dateirecht 1777 für ein Verzeichnis, das mit Sticky-Bit (1) versehen ist.
Dateirechte / Schreibrechte mit FTP-Client festlegen
Wer direkt an der Webserver-Front agiert, kommt um die gelegentliche Anpassung von Dateirechten nicht herum. Aus Gründen der Didaktik lagern wir die Behandlung von Rechteverwaltung auf Command-Line Basis aus und verweisen hier auf die qualifizierten Artikel unserer Tech-Kollegen aus der Unix-Fraktion (chmod Ubuntu).
Viel praxisrelevanter ist die Rechteverwaltung mit Hilfe eines FTP-Clients wie FileZilla. Diese Clients bieten von Haus aus eine komfortable und übersichtliche Möglichkeit der Rechteverwaltung, die z.B. via Rechtsklick aktiviert werden kann. Für alle Webdesigner, Programmierer und Webseiten-Besitzer, die keinen Shell-Zugriff auf ihren Webserver haben oder diesen selber betreiben, besteht ohnehin keine andere einfache Möglichkeit, mit denen die Dateirechte angepasst werden können.
Der folgende Screenshot zeigt ein Besipiel der Nutzer-GUI in der Dateiverwaltung von FileZilla, die über einen lässigen Rechtsklick auf die jeweilige Dateien/Verzeichnisse im Webserver erreicht werden kann:
Dateirechte und Verzeichnisrechte regelmäßig überwachen
Man liegt sicherlich nicht falsch damit, wenn man behauptet, dass die Dateirechte das wohl zentralste Element in der Sicherheit von Webseiten oder Webservern darstellen, sofern Zentralität einen Superlativ besitzt. Eine regelmäßige Überwachung der Dateirechte ist deshalb auch für kleine Webseiten auf einem eigenen Webspace so wichtig wie ein guter Steuerberater für Weltkonzerne!
Wer beispielsweise für sein Business eine eigene WordPress Webseite installiert sollte im Anschluss zwingend die wichtigsten Sicherheitsanpassungen vornehmen und die Dateirechte anpassen. Mit FileZilla lassen sich die Sonderrechte (glücklicherweise!) aber nur bedingt bzw. gar nicht verwalten.
Für viele Dateisysteme (auch die gängigen WordPress-Installationen auf einem Webserver) lässt sich die folgende Grundregelfesthalten:
- 0755für Verzeichnisse unter Unterordner, die nicht gesondert geschützt werden müssen
- 0644für die meisten Dateien
- 0400oder 0440für sensible Dateien wie Konfigurationsdateien z.B. mit Datenbankinformationen (beispielweise die wp-config.php)