Szenario - NTFS Symbolic Link oder Junction?

17

Unterschiede

┌───────────────┬──────────┬──────────┬──────┬──── ───────┬─────┐
│ │ Absolut │ Relativ │ Datei │ Verzeichnis │ UNC │
├───────────────┼──────────┼──────────┼──────┼──── ───────┼─────┤
│ Symbolischer Link │ Ja │ Ja │ Ja │ Ja │ Ja │
│ Kreuzung │ Ja │ - │ - │ Ja │ - │
└───────────────┴──────────┴──────────┴──────┴──── ───────┴─────┘

Szenario

Nehmen wir an, wir erstellen einen Analysepunkt, um die Umleitung zu erstellen C:\SomeDir => D:\SomeDir

Da für dieses Szenario nur lokale, absolute Pfade erforderlich sind, funktioniert entweder eine Junction oder ein Symlink. Gibt es in dieser Situation einen Vorteil bei der Verwendung des einen oder anderen?

Nehmen Sie Windows 7 als Betriebssystem an, ohne Rücksicht auf die Abwärtskompatibilität. (Vor Vista werden Symlinks von Haus aus nicht unterstützt, obwohl es einen Treiber von Drittanbietern gibt, der Symlink-Unterstützung unter Windows XP bietet.)

Aktualisieren

Ich habe einen anderen Unterschied gefunden.

  • Symbolische Verknüpfung - Die Berechtigungen der Verknüpfung wirken sich nur auf Lösch- / Umbenennungsvorgänge für die Verknüpfung selbst aus. Der Lese- / Schreibzugriff (auf das Ziel) wird durch die Berechtigungen des Ziels geregelt
  • Junction - Die Berechtigungen von Junction wirken sich auf die Aufzählung aus. Wenn Sie Berechtigungen für die Junction widerrufen, wird die Dateiliste über diese Junction verweigert, auch wenn der Zielordner über mehr zulässige ACLs verfügt

Die Berechtigungen machen es interessant, da mit Symlinks älteren Anwendungen der Zugriff auf Konfigurationsdateien in Bereichen mit eingeschränkter Benutzerkontensteuerung (z. B. %ProgramFiles%) ermöglicht werden kann, ohne vorhandene Zugriffsberechtigungen zu ändern, indem die Dateien an einem nicht eingeschränkten Speicherort gespeichert und Symlinks im eingeschränkten Verzeichnis erstellt werden.

Update 2

Windows 8.1 löst symbolische Verzeichnisverknüpfungen auf, wenn Sie über das Textfeld in einem Save As...Dialogfeld in eines navigieren . Kreuzungen werden nicht erweitert.


quelle
Haben Sie einen Link zu den Informationen zur Berechtigungsdifferenz? Das ist schon der Fund.
Surfasb
Meine Tests bestätigen, dass der Lesezugriff auf das Zielverzeichnis (dh das Auflisten von Verzeichnisinhalten) zusätzlich zu den Berechtigungen im Zielverzeichnis durch die Berechtigungen auf dem Junction-Punkt eingeschränkt wird. Es scheint jedoch kein anderer Zugriff betroffen zu sein. Insbesondere können Sie Dateien und Unterordner erstellen, wenn die Zielverzeichnisberechtigungen dies zulassen, unabhängig von den Junctionpunktberechtigungen.
Harry Johnston
@HarryJohnston: Anfangs hatte ich einen Verdacht auf Inkonsistenz, da ich Lösch- und Schreibberechtigungen für Juctions blockiere, aber Elemente und Unterordner darunter sind in Ordnung.
Surfasb
Ich werde dies nicht vollständig beantworten, es sei denn, Sie werden dazu aufgefordert, aber wenn Sie ein GNU-System oder ein anderes Nicht-Windows-System verwenden, um auf das Volume zuzugreifen mount.cifs, werden Symlinks als solche angezeigt, während Junctions als normale Verzeichnisse angesehen werden - wahrscheinlich aufgrund der Punkt, an dem die E / A-Auflösung auftritt, dh lokal auf dem Windows-Host.
can-ned_food

Antworten:

4

Ich verstehe, dass symbolische NTFS-Links ein Ersatz für Junctions auf neueren Windows-Betriebssystemen (Vista / 7/8) sind, da sie auf die gleiche Weise funktionieren, aber auch zusätzliche Funktionen bieten (Remote-Punkte). Wenn Sie also nur mit neueren Betriebssystemen arbeiten, gibt es keinen Grund, die Option für symbolische Verknüpfungen nicht zu verwenden.

Garrett
quelle
Symlinks auf Servern werden standardmäßig ignoriert, und selbst wenn sie von den Zugriffsregeln auf Freigabeebene des Servers befolgt werden, können Sie beispielsweise keine Symlinks zu einem Speicherort auf dem Server erstellen, der nicht freigegeben ist Freigabe gewährt dem Benutzer keinen Zugriff. Symlinks können daher Knotenpunkte nicht in allen Kontexten ersetzen.
Harry Johnston
2

Ich denke, dass Junction Points eine umfassendere Unterstützung für Backup-Software bieten als symbolische Links. Sie sollten mit dem von Ihnen verwendeten Sicherungsprogramm überprüfen, welche Funktion unterstützt wird.

Wenn dies nicht unterstützt wird, wird der Symlink / Junction-Punkt entweder als separates Verzeichnis gesichert (und als solches wiederhergestellt) oder überhaupt nicht gesichert.

Abgesehen vom Backup-Problem sehe ich keinen Grund, in Ihrem speziellen Fall (lokales Verzeichnis) das eine dem anderen vorzuziehen.

haimg
quelle
Knotenpunkte und Symlinks werden beide über NTFS mithilfe von Analysepunkten implementiert. Laut MSDN werden beide durch Dateioperationen über die API gleich behandelt.
Surfasb
2
@surfasb: Wenn die Symlinks jedoch nicht speziell unterstützt werden (und als solche erkannt werden), werden sie während der Wiederherstellung aus dem Backup nicht als Symlinks neu erstellt.
haimg
Ah, sehr guter Punkt! Ich habe nicht weit genug nachgedacht.
Surfasb
Soweit ich weiß, ist dies wichtiger, wenn ältere Windows-Betriebssysteme auf das Volume zugreifen.
can-ned_food
1

NTFS-Junctions können nur auf Verzeichnisse verweisen, während Symlinks auch für Dateien funktionieren.

Grawity
quelle
Für Dateien können Sie stattdessen einen Hardlink verwenden.
Paradroid
0

Hier ist ein Unterschied, den ich bemerkt habe:

Ich habe ein synchronisiertes Verzeichnis mit Skripten, tragbaren Apps usw. Ich verwende ein Stapelskript, um im Startmenü eine Verknüpfung zu erstellen, die auf ein Verzeichnis mit Verknüpfungen für die tragbaren Apps verweist.

Über eine Kreuzung können die Verknüpfungen im Startmenü angezeigt werden. Wenn ich stattdessen einen symbolischen Link verwende, funktioniert dieser nicht.

paradroid
quelle
Seltsam, das funktioniert gut für mich. Ich habe auch Symlinks zu Flash-Laufwerken in meinem Computer eingesteckt.
Surfasb
@surfasb: Bist du sicher, dass du das tust, was ich beschrieben habe? Verknüpfungen innerhalb eines Verzeichnisses, auf das durch eine symbolische Verknüpfung mit dem Startmenü-Verzeichnis verwiesen wird, werden in meinem Startmenü nicht angezeigt. Sie tun dies, wenn stattdessen eine Junction verwendet wird.
Paradroid
Ich bin mir nicht sicher, ob ich das richtig gelesen habe. Also im Startmenü ein Symlink, der auf einen Ordner zeigt, der Verknüpfungen enthält? Ich habe es gerade versucht. Ich habe sogar den Symlink erhalten, der auf einen anderen Symlink in einem Pfad ohne Pfad verweist, der auf den Ordner in einem UNC-Pfad mit Verknüpfungen verweist. Das bricht natürlich die Abkürzungen. In Windows ist eine Symlink-Überquerung von "Remote zu Remote" standardmäßig deaktiviert.
Surfasb
0

Vielleicht habe ich es irgendwo in den Kommentaren verpasst, aber ein sehr wichtiger Unterschied zwischen Symlinks und Junctions in Windows sind für mich die erforderlichen Berechtigungen, um beide zu erstellen. Während Symlinks standardmäßig nur mit speziellen Berechtigungen erstellt werden können, die Standardbenutzer nicht haben, können Junctions problemlos von allen Standardbenutzern erstellt werden. Daher ist dies mein bevorzugter Linktyp für Verzeichnisse.

Standardmäßig haben Mitglieder der Gruppe Administratoren dieses Recht.

https://docs.microsoft.com/de-de/windows/device-security/security-policy-settings/create-symbolic-links

Thorsten Schöning
quelle