2011-10-05 03:28:14 +0000 2011-10-05 03:28:14 +0000
412
412

"verzeichnisverknüpfung" vs. "symbolischer verzeichnislink"?

Im Kontext von NTFS:

MKLINK [[/D] | [/H] | [/J]] Link Target

/D Erstellt einen symbolischen Verzeichnis-Link. Standard ist ein symbolischer Datei-Link. /H Erzeugt einen Hardlink anstelle eines symbolischen Links. /J Erzeugt eine Verzeichnisverbindung. Link gibt den neuen symbolischen Link-Namen an.
Target gibt den Pfad (relativ oder absolut) an, auf den der neue Link verweist.

  1. Ist eine Verzeichnisverzweigung nicht genau dasselbe wie ein symbolischer Verzeichnislink?

  2. Da ein “Verzeichnis” eigentlich nur eine Datei ist, was wäre der Unterschied zwischen einem symbolischen Verzeichnis-Link und einem symbolischen Datei-Link?

Antworten (3)

382
382
382
2011-10-05 03:43:56 +0000

Eine Abzweigung ist definitiv nicht dasselbe wie ein symbolischer Link auf ein Verzeichnis, obwohl sie sich ähnlich verhalten. Der Hauptunterschied besteht darin, dass, wenn es sich um einen entfernten Server handelt, Verknüpfungen auf dem Server und Verzeichnissymbolische Links auf dem Client verarbeitet werden. Siehe auch Matthews Kommentar zu der Tatsache, dass dies bedeutet, dass symbolische Links auf dem lokalen Dateisystem auf entfernte Dateisysteme zeigen können.

Nehmen wir an, Sie würden auf einer Maschine namens Alice einen Verbindungspunkt c:\myjp und einen symbolischen Verzeichnis-Link c:\mysymlink setzen, die beide auf c:\targetfolder zeigen. Während Sie Alice verwenden, werden Sie keinen großen Unterschied zwischen beiden feststellen. Aber wenn Sie einen anderen Rechner namens Bob verwenden, dann wird der Knotenpunkt

\Alice\c$\myjp auf \Alice\c$\targetfolder

zeigen, aber der symbolische Link

\Alice\c$\mysymlink wird auf \Bob\c$\targetfolder

zeigen (Vorsicht: Standardmäßig folgt das System Symlinks auf entfernten Volumes nicht, so dass das zweite Beispiel in den meisten Fällen entweder “Datei nicht gefunden” oder “Der symbolische Link kann nicht verfolgt werden, weil sein Typ deaktiviert ist. ”)

Der Unterschied zwischen einem symbolischen Link auf ein Verzeichnis und einem symbolischen Link auf eine Datei besteht einfach darin, dass der eine ein Verzeichnis und der andere eine Datei repräsentiert. Da das Ziel des Links nicht existieren muss, wenn der Link erstellt wird, muss das Dateisystem wissen, ob es den Anwendungen mitteilen soll, dass es sich um ein Verzeichnis handelt oder nicht.

Es ist auch zu beachten, dass die Erstellung eines symbolischen Links besondere Privilegien erfordert (standardmäßig nur für Prozesse mit erhöhten Rechten verfügbar), während die Erstellung einer Verbindung nur Zugriff auf das Dateisystem erfordert.

65
65
65
2015-10-22 19:03:16 +0000

Komplexes Gerede tut dem Gehirn weh – Ich mag Diagramme:

Nehmen wir an, irgendeine MyLink ist eine symbolische Verbindung und irgendeine MyJunc ist eine Kreuzung, die auf Target as created zeigt.

z.B.

mklink /D MyLink C:\T_Dir für die Erstellung eines symbolischen Links zum Zielverzeichnis

mklink /J MyJunc C:\T_Dir für die Erstellung einer Verzeichnisverzweigung zum Zielverzeichnis

Wo die Syntax mklink [/J,/D] [link path] [target path] so ist, wie sie auf dem lokalen Rechner eingegeben wurde


link path | target path | When accessed ..
              | | (locally) | (remotely)
              | | |
C:\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
C:\MyJunc | C:\T_Dir | C:\T_Dir | [leads to remote]
              | |
\Svr\MyLink | C:\T_Dir | C:\T_Dir | [leads back to local]
\Svr\MyJunc | C:\T_Dir | ***Must create and point local***
              | |
C:\MyLink | \Sv2\T_Dir | \Sv2\T_Dir | Error*1
C:\MyJunc | \Sv2\T_Dir | ***Error - Must point local***
              | |
\Svr\MyLink | \Sv2\T_Dir | Error*1
\Svr\MyJunc | \Sv2\T_Dir | ***Must create link using target device***

Fehler*1 - Wenn Sie den Zugriff auf entfernte symbolische Links auf Ihrem lokalen Rechner freigeben würden, dann würde das funktionieren … aber nur auf dem lokalen Rechner, auf dem die Sperre aufgehoben ist

55
55
55
2018-02-02 16:30:06 +0000

Symbolische Links verfügen über mehr Funktionalität, während Knotenpunkte aufgrund ihrer Einschränkungen fast wie ein vererbtes Merkmal erscheinen, aber die sicherheitsrelevanten Auswirkungen dieser Einschränkungen sind der Grund, warum ein Knotenpunkt einem symbolischen Link vorgezogen werden könnte. Remote Targeting macht symbolische Links funktionaler, erhöht aber auch ihr Sicherheitsprofil, während Kreuzungen als sicherer angesehen werden könnten, da sie auf lokale Pfade beschränkt sind. Wenn Sie also einen lokalen Link wollen und mit einem absoluten Pfad leben können, sind Sie mit einer Kreuzung wahrscheinlich besser dran; andernfalls sollten Sie einen symbolischen Link wegen seiner zusätzlichen Fähigkeiten in Betracht ziehen.

**Die Aussage über den Unterschied in Geschwindigkeit/Komplexität stammt aus einer nicht verifizierten Aussage im Wikipedia-Eintrag über NTFS-Reparse-Punkte (gut zu lesen). *


Andere NTFS-Link-Vergleiche

Hier sind einige andere Vergleiche zum Thema, aber diese können bei der Betrachtung von Kreuzungen irreführend sein, weil sie nicht die Vorteile auflisten, die ich oben aufzähle. Von hier übernommen (eine gute Einführung)

Von SS64-Seite auf MKLink


Kommentare zur Terminologie

Abzweigungen sind symbolische Links

Abzweigungen und symbolische Links machen wirklich dasselbe auf dieselbe Weise (Reparationspunkte), abgesehen von den oben erwähnten Unterschieden in der Art und Weise, wie sie verarbeitet werden. Tatsächlich ist eine Junction technisch gesehen ein symbolischer Link, und manchmal wird eine Junction in der Dokumentation als symbolischer Link bezeichnet, wie es hier der Fall ist . Das ist also nur etwas, worüber man sich hinsichtlich der Terminologie im Klaren sein sollte.

NTFS

Auch wenn das OP dies spezifiziert, ist es wert, darauf hinzuweisen, dass “symbolischer Link” ein sehr allgemeiner Begriff ist, der nicht spezifisch für NTFS ist. Um spezifisch zu sein, geht es in diesem Vergleich also um NTFS-Kreuzungen im Vergleich zu symbolischen NTFS-Links.