Dateiberechtigungen

Einleitung

Dieser Artikel bezieht sich auf die Datei- und Verzeichnisberechtigungen unter Linux-Systemen, welche auf den Webhosting-Servern der GWDG Anwendung finden. Dateiberechtigungen dienen zur eindeutigen Feststellung der Ausführungs-, Schreib- sowie Leseberechtigungen für Gruppen und einzelne Benutzer. Dateiberechtigungen bilden somit einen elementaren Teil des Sicherheitskonzeptes eines Linux-Systems dar.

Konzept

Einer Datei kann, vereinfachend gesagt, jeweils ein Wert für die drei Grundfunktionen

  • Lesen (r)
  • Schreiben (w)
  • Ausführen (x)

zugeordnet werden. Zusätzlich ist jede Datei einem Eigentümer sowie einer Benutzergruppe zugeordnet.

Die tatsächlichen Berechtigungen für den einzelnen Nutzer ergeben sich aus der Notierung nach dem Muster:

  • Eigentümer
  • Gruppe
  • Sonstige

Eine Berechtigung nach dem Muster -rwx–r–r wäre demnach folgendermaßen zu übersetzen:

  • 1. Block (Eigentümer): Read, Write, Execute
  • 2. Block (Gruppe): Read
  • 3. Block (Sonstige): Read

Hierbei gilt: Eine normale Datei wird mit einem führenden - markiert - ein Verzeichnis mit einem d.

Ausführliches Beispiel:

-rw-r--r--  1 testuser testgroup 110M Jun  17  2016 testfile

Der Eigentümer der Datei testfile ist demnach der Nutzer testuser. Als Gruppenberechtigung ist testgroup hinterlegt. Der Eigentümer darf diese Datei lesen und beschreiben, die Mitglieder der Gruppe testgroup sowie alle anderen (Sonstige) dürfen diese Datei nur lesen.

Oktalnotation

Bei der Oktalnotation wird die Berechtigungsangabe auf eine Oktalzahl verkürzt.

Hierbei werden die sich ergebenden Werte aus folgender Zuordnung aufaddiert:

  • Lesen: 4
  • Schreiben: 2
  • Ausführen: 1

Die Berechtigung rwx würde demnach dem Wert 7 entsprechen (4 für r + 2 für w + 1 für x). Somit ist die Dateiberechtigung 755 folgendermaßen zu übersetzen:

  • 1. Block (Eigentümer): Read, Write, Execute
  • 2. Block (Gruppe): Read, Execute
  • 3. Block (Sonstige): Read, Execute

Auswirkungen auf den Betrieb von Webseiten

Die Vergabe von Dateiberechtigungen hat direkte Auswirkungen auf den Betrieb von Webseiten. So werden Dateien, welche per SFTP in das Dokumentenstammverzeichnis geladen werden, grundsätzlich dem Systembenutzer des Abonnements zugeordnet. Der Anwender kann zudem über einen geeigneten SFTP-Client Berechtigungen vergeben.

Ungewünschte Nebeneffekte können sich jedoch ergeben, sofern PHP-Scripte des Anwenders selbst versuchen, existierende Daten zu überschreiben. Der Apache-Webserver läuft als Prozess unter dem Benutzer www-data und ist somit nicht identisch mit dem Systembenutzer. Wird eine Datei beispielsweise mit den Berechtigungen 644 abgelegt, so ist der PHP-Prozess unter dem Benutzer www-data entsprechend nicht in der Lage, diese Datei zu überschreiben.

Dieses Verhalten kann beim Upload von Bildern, aber auch bei der webbasierten Durchführung von Updates, häufig vorzufinden in CMS wie WordPress, Drupal, PageKit oder Joomla! auftreten.

Wird eine webbasierte Wartung gewünscht, so ist zu prüfen, ob eine Übergabe der Dateieigentümerschaft an www-data sinnvoll ist.