Wie wird ein symbolischer Link im Vergleich zu einem Hardlink in einem Dateisystem dargestellt?

Wie wird ein symbolischer Link im Vergleich zu einem Hardlink in einem Dateisystem dargestellt?

Ich möchte sicherstellen, dass ich dies richtig verstanden habe:

  • Durch das Erstellen eines Hardlinks wird ein weiterer Dentry erstellt, der auf denselben Inode verweist
  • Beim Erstellen eines Symlinks wird ein komplett neues Dateiobjekt/Inode erstellt, das auf die Dentry des anderen Inodes verweist. Das Dateisystem behandelt diese Datei auf besondere Weise (es leitet bestimmte Operationen auf die Dentry des anderen Inodes um).

Antwort1

Korrekt für einen Hardlink, aber nicht für einen symbolischen Link. Der Inhalt eines symbolischen Links ist nur eine Zeichenfolge. Dies ermöglicht es einem symbolischen Link beispielsweise, auf ein Dateisystem zu verweisen, das derzeit nicht gemountet ist. Ein symbolischer Link ist nur Text; wenn der Kernel auf einen solchen Link stößt, fügt er den symbolischen Link im Wesentlichen in den Pfad ein, den er gesucht hat, teilt ihn in durch Schrägstriche getrennte Teile auf und sucht entsprechend nach .. ..Symbolische Links erteilen keine zusätzlichen Berechtigungen: Die von den Pfadelementen verursachten Durchläufe, die vom symbolischen Link stammen, unterliegen denselben Berechtigungsbeschränkungen, als ob die Anwendung diese Pfadelemente angegeben hätte. Ein symbolischer Link hat seinen eigenen Inode (oder zumindest scheint es so – hinter den Kulissen erlauben einige Dateisysteme nicht, dass Symlinks mehrere Hardlinks haben, und speichern die Symlinks direkt in dem Verzeichnis, das sie enthält, aber es meldet der lstatFunktion trotzdem eine Inode-Nummer).

Auf Systemebene hängt die Behandlung symbolischer Links von der Art der Operation ab. Operationen, die auf Verzeichniseinträge einwirken (z. B. Umbenennen, Löschen), behandeln symbolische Links wie jede andere Datei. Operationen, die auf Dateiinhalte einwirken (z. B. open, chdir), folgen dem symbolischen Link und wirken auf das Ziel (und melden einen Fehler, wenn die symbolische Linkkette mit einem defekten Link endet). Bei Operationen, die auf die Dateimetadaten einwirken (d. h. auf den Inode), hängt es davon ab: Für einige Operationen gibt es ein Funktionspaar (z. B. stat/ lstat), für andere wird dem symbolischen Link gefolgt (z. B. chmod, utimeshaben unter Linux keine symbolische Linkvariante).

verwandte Informationen