Links im Dateisystem

Man kann durchaus behaupten, ich sei “etwas aus der Art” geschlagen.

Denn während viele Programmierer “Links” in unixoiden Dateisystemen als Segen betrachten, sehe ich das ganz konträr und behaupte, dass Links eher ein Feind der Ordnung als dessen Freund sind.

Also … was stimmt nicht mit mir?


Links sind nicht gleich Links, es gibt einige Unterarten davon. Hier soll es NICHT um die von mir akzeptierten “Hardlinks” gehen, sondern um “Symbolische Links”, auch als “Sym-Links” oder “Soft-Links” bekannt.

Denn dabei handelt es sich quasi um eigene Dateien im Dateisystem, die aber selbst keinen Inhalt haben und auf eine andere Datei verweisen. Das Betriebssystem führt die Auflösung von Sym-Links zu den Zieldateien im Hintergrund aus, womit mehrere Einzelschritte notwendig werden.

Und genau hier liegt mein Problem mit diesem Konstrukt:
Ein Sym-Link ist ein eigenständiger Dateieintrag mit eigenen Rechten und die verlinkte Zieldatei ist ein anderer Dateieintrag mit anderen Rechten.

Wird also ein Link geöffnet kann es zu folgenden Fehlerfällen kommen:

  1. Die Dateirechte verbieten den Zugriff zum Sym-Link
  2. Die Zieldatei ist gar nicht vorhanden
  3. Die Dateirechte verbieten den Zugriff zur Zieldatei
  4. Die Zieldatei ist selbst ein Link und das Spiel wiederholt sich

Jetzt könnte man natürlich sagen:

Mir doch egal, warum ich nicht zugreifen kann.
Fakt ist: Es geht einfach nicht.

Und im Normalfall stimmt das auch.
Wenn man aber Tools zur Dateiverwaltung gestaltet, wo es um das Kopieren, Verschieben und Löschen von Dateien geht, wird das Thema jedoch kritisch.

  • Was bedeutet es, wenn man einen Link kopieren will?
  • Kopiert man den Inhalt der verlinkten Datei?
  • Erstellt man einen weiteren Link zur Originaldatei?
    • Ist das ein relativer oder absoluter Pfad?
  • Sollen APIs, die prüfen, ob eine Datei existiert, auch prüfen ob das Ziel eines Links ebenso existiert?
  • Dürfen Links verschoben werden, vor allem wenn sie relative Pfadangaben beinhalten.
  • Darf man Links kopieren oder verschieben, wenn ihr Ziel nicht existiert?
  • Und welche Rechte sollen Links bekommen?

Tja, die Antwort of diese Fragen ist mehr als komplex und müsste theoretisch von Anwendung zu Anwendung anders entschieden werden.

Unter Windows kommt erschwerend hinzu, dass das Erzeugen neuer Links im Normalfall nur mit Admin-Rechten erlaubt ist.

Hier liegt also der Knackpunkt: Unabhängiger Bibliothekscode kann nicht alle Eventualitäten vorsehen und kann somit nicht universell eingesetzt werden.

Und dieses selbst geschaffene Problem gibt es in Dateisystemen ohne Links eben nicht.


Da ich aktuell auch an den Dateiverwaltungsroutinen im GATE Projekt arbeite, müssen hier entsprechende Workarounds integriert werden, die die oben gestellten Fragen beantworten oder zumindest berücksichtigen.

Eine endgültige Lösung habe ich nicht parat und werde wohl noch einige Tests abwarten müssen und eventuell auch später das Verhalten abändern müssen, um auf relevante Szenarien auf Zielsystemen vorbereitet zu sein.

Naja, und deshalb sind mir Links per Definition eben unsympathisch.
Mal sehen was die Zukunft bring…