Autor: AHT
Symbolische Verknüpfungen und sich endlos wiederholende Ordnerstrukturen
Immer dann, wenn es bei Fehlern auf einem Rechner zu einer merkwürdigen Endlos-Verkettung der selben Ordnerstruktur kommt (wie zum Beispiel C:\Users\All Users\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\Anwendungsdaten\...), kann man im Prinzip davon ausgehen, dass eine symbolische Verknüpfung oder deren (falsche) Handhabung durch ein Programm daran Schuld ist.
Aber - was zum Kuckuck sind symbolische Verknüpfungen?
Auf Datenträgern, die im Dateisystem NTFS formatiert sind, existieren neben Dateien und Ordnern noch Dinge, die ein "klein bisschen" anders sind - nämlich sogenannte symbolische Verknüpfungen. Diese Dinge muss man sich als "Umleitung" im Dateisystem vorstellen. Öffnet man eine symbolische Verknüpfung, öffnet man nicht das eigentliche Objekt (symbolische Verknüpfungen sind generell leer) sondern das Objekt, mit dem es im Dateisystem verknüpft wurde. Symbolische Verknüpfungen können sowohl als Dateien existieren, die auf eine andere Dateien zeigen, als auch die Form von Ordnern haben, welche mit anderen Ordnern verlinkt sind. Man kann mit solchen Verknüpfungen, ohne groß Speicher belegen zu müssen, von verschiedenen Orten des Dateisystems immer das gleiche reale Objekt öffnen lassen - in manchen Fällen kann das sehr nützlich sein. Auf Betriebssystemen ab Windows Vista sind symbolische Verknüpfungen keine Seltenheit mehr. Sie sind dort in der Regel als Ordnerumleitungen vorhanden und dienen unter anderem für Kompatibilitätszwecke - zum Beispiel mit XP.
Au weia - die Umleitung in den Kreisverkehr...
Wenn man sich nun aber vorstellt, dass so eine symbolische Verknüpfung eine Umleitung darstellt, könnte ja diese Umleitung auch auf den Anfang der Straße zeigen (also auf den Ordner, in dem die symbolische Verknüpfung steht). Bei einer Dateisuche könnte es so beispielsweise dazu kommen, dass sich das suchende Programm in einer Endlosschleife verirrt, so dass es bei der Suche immer wieder im selben Ordner landet.
Aber wer würde so eine wahnwitzige "Umleitung" in einen "Kreisverkehr" denn erstellen? Ganz einfach - Microsoft tut das. Auf Betriebssystemen ab Vista sind solche symbolischen Verknüpfungen, die auf ihren Oberordner zeigen, generell schon vorhanden.
Die "Umleitung" C:\Users\All Users zeigt zum Beispiel auf den Ordner C:\Programdata. In C:\Programdata ist wiederum eine "Umleitung" vorhanden, die Anwendungsdaten heißt und wieder auf C:\Programdata zeigt.
Warum hängt sich denn dann nicht jedes Programm auf, das nach Dateien sucht?
Das Aufrufen dieser Umleitungen findet quasi auf Low Level Ebene statt - damit haben die Programme selbst nichts zu tun. Beim Erstellen einer solchen Verknüpfung werden deshalb die Zugriffsrechte auf die Verknüpfung so gesetzt, dass jedem normalem Programm verboten wird, Daten auszulesen. Will man eine solche symbolische Verknüpfung zum Beispiel im Windows Explorer weiter verfolgen, passiert normalerweise das:
Normal hängt sich da also nichts auf...
Was ist heutzutage schon normal?
Problematisch wird die Sache eigentlich erst, wenn ein Programm mit besonderen Privilegien ausgestattet ist, also spezielle Zusatzrechte besitzt. Von solchen Zusatzrechten gibt es in Windows einige - in unserem Fall ist das Sonderrecht mit dem Namen SeBackupPrivilege (SE_BACKUP_NAME) wichtig. Besitzt ein Programm dieses Zusatzrecht und aktiviert es zusätzlich, kann es im Prinzip Verbote durch Zugriffsrechte vergessen und alles lesen.
Vorgesehen ist dieses Zusatzrecht für Backup-Programm, denn was diese nicht lesen können, können sie ja auch nicht sichern.
Weil das ein extrem mächtiges Recht ist, besitzen es nur Programme, die als vollwertiger Administrator laufen. Ist dieses Privileg also nicht aktiviert, fängt sich das Programm nicht in einer Endlosschleife, auch wenn es mit vollwertigen Administratorrechten ausgeführt wird.
Das Problem dabei ist, dass ein Programm dieses SeBackupPrivilege-Recht gar nicht selbst aktivieren muss - das kann auch durch ein anders Programm von außen aktiviert werden. Behandelt dann das jeweilige Programm symbolische Verknüpfungen wie normale Ordner und folgt diesen Umleitungen, führt das direkt in diesen Kreisverkehr und in eine Endlosschleife.
Was ist heutzutage schon normal - zweite Runde...
Eine zweite Möglichkeit, bei der normale Programme so einer symbolischen Verknüpfung in einen Kreisverkehr folgen könnten, wäre das Bestehen eines Festplattenproblems. Hat es durch einen Dateisystemfehler die Sicherheitsbeschreibung der symbolischen Verknüpfung zerschossen, wurde evtl. durch Vererbung eines Oberordners da mehr erlaubt, als es sein dürfte. So etwas kann unter Anderem durch Rechnerabstürze zu einem falschen Zeitpunkt passieren - da ist dann also unter Umständen etwas auf der Platte nicht mehr OK. Das sollte dann repariert werden.
Aber - wie zum Teufel erkennt man symbolische Verknüpfungen?
Symbolische Verknüpfungen werden - genau wie LNK Verknüpfungen - im Windows Explorer mit einem kleinen Verknüpfungspfeil neben dem Icon angezeigt.
Sichtbar werden die meisten symbolischen Verknüpfungen, die das Betriebssystem anlegt, erst wenn in der Ordneroptionen das Häkchen bei Geschütze Systemdateien ausblenden (empfohlen) entfernt und Alle Dateien und Ordner anzeigen gesetzt wird.
Hunde, die man kennt, beißen einen nicht - aber kennt jeder diese Hunde?
Die größte Gefahr bei symbolischen Verknüpfungen ist eigentlich, sich nicht um sie zu kümmern oder gar nicht zu wissen, dass es sie gibt.
Aber weiß wirklich jeder, dass es diese Verknüpfungern gibt und beachtet jeder sie? Auf die meisten User trifft das wohl nicht zu, genausowenig aber leider auch auf die meisten Programmierer!
Beim Programmieren unterscheiden sich symbolische Verknüpfungen eigentlich kaum von normalen Dateien und Ordnern - sie besitzen nur ein zusätzliches Attribut. Berücksichtigt ein Programmierer bei seiner Arbeit dieses Attribut nicht, behandelt seine Software solche Verknüpfungen wie normale Dateien und Ordner. Gerade bei Backup-Programmen kann es da zu gewaltigen Fehlern kommen, von denen der User zunächst gar nichts mitbekommt. Da erst seit Vista diese "Umleitungen im Dateisystem" wirklich Einzug ins Betriebssystem gehalten haben, behandeln viele ältere Programme (aber auch manche neue) diese Verknüpfungen falsch und nicht als das, was sie wirklich sind. Gerade bei Backup-Programmen muss man an dieser Stelle wirklich auf Kompatibilität zu Vista achten.