シナリオ-NTFSシンボリックリンクまたはジャンクション?


17

違い

┌───────────────┬──────────┬──────────┬──────┬───── ───────┬─────┐
││絶対│相対│ファイル│ディレクトリ│UNC│
├───────────────┼──────────┼──────────┼──────┼───── ───────┼─────┤
│シンボリックリンク│はい│はい│はい│はい│はい│
│ジャンクション│はい│-│-│はい│-│
└───────────────┴──────────┴──────────┴──────┴───── ───────┴─────┘

シナリオ

リダイレクトを作成するために再解析ポイントを作成していると仮定しましょう C:\SomeDir => D:\SomeDir

このシナリオはローカルの絶対パスのみを必要とするため、ジャンクションまたはシンボリックリンクのいずれかが機能します。この状況で、どちらかを使用する利点はありますか?

下位互換性を無視して、OSにWindows 7を想定します。(Windows XPでシンボリックリンクをサポートするサードパーティのドライバーがありますが、Vistaより前では、シンボリックリンクはネイティブにサポートされていません。)

更新

別の違いが見つかりました。

  • シンボリックリンク- リンクのアクセス許可は、リンク自体の削除/名前変更操作にのみ影響します。ターゲットへの読み取り/書き込みアクセスは、ターゲットのアクセス許可によって管理されます。
  • ジャンクション- ジャンクションの権限は列挙に影響します。ジャンクションの権限を取り消すと、ターゲットフォルダーに許可されているACLがさらにある場合でも、そのジャンクションを介したファイルリストが拒否されます。

シンボリックリンクを使用すると、レガシアプリケーションが%ProgramFiles%既存のアクセス許可を変更せずにUACで制限された領域の構成ファイルにアクセスできるようになります。ファイルを制限のない場所に保存し、制限されたディレクトリにシンボリックリンクを作成します。

更新2

Windows 8.1は、Save As...ダイアログボックスのテキストボックスを介してシンボリックディレクトリリンクに移動すると、シンボリックディレクトリリンクを解決します。ジャンクションは拡張されません。


許可差情報へのリンクはありますか?それはかなりの発見です。
surfasb

私のテストでは、ターゲットディレクトリに対する読み取りアクセス(つまり、ディレクトリの内容の一覧表示)が、ターゲットディレクトリに対するアクセス許可に加えて、ジャンクションポイントに対するアクセス許可によって制限されていることを確認しています。ただし、他のアクセスは影響を受けていないようです。特に、ジャンクションポイントのアクセス許可に関係なく、ターゲットディレクトリのアクセス許可で許可されている場合は、ファイルとサブフォルダーを作成できます。
ハリージョンストン

@HarryJohnston:当初、私はjuctionsに対する削除と書き込みの許可をブロックするため、いくつかの矛盾を疑っていましたが、その下のアイテムとサブフォルダーはうまくいきます。
surfasb

要求がない限り、これを完全な回答にはしませんが、GNUまたはその他のWindows以外のシステムを使用してボリュームにアクセスしているmount.cifs場合、symlinksはそのように表示されますが、ジャンクションは通常のディレクトリとして表示されます。 IO解決が発生する場所、つまり Windowsホストでローカルに。
can-ned_food

回答:


4

NTFSシンボリックリンクは、新しいWindows OS(Vista / 7/8)のジャンクションの代替品であり、同じように機能しますが、追加機能(リモートポイント)を提供するため、理解しています。したがって、新しいオペレーティングシステムのみを使用している場合は、シンボリックリンクオプションを使用しない理由はありません。


デフォルトでは、サーバー上のシンボリックリンクは無視されます。従う場合でも、サーバーの共有レベルのアクセス規則によって制限されます。たとえば、共有されていないサーバー上の場所にシンボリックリンクすることはできません。共有はユーザーにアクセスを許可しません。そのため、シンボリックリンクはすべてのコンテキストで接合点を置き換えることはできません。
ハリージョンストン

2

ジャンクションポイントは、シンボリックリンクよりもバックアップソフトウェアのサポートが広いと思います。どの機能がサポートされているかを使用しているバックアッププログラムで確認する必要があります。

サポートされていない場合、シンボリックリンク/ジャンクションポイントは、別のディレクトリとしてバックアップされる(およびそのように復元される)か、まったくバックアップされません。

バックアップの問題を除いて、特定のケース(ローカルディレクトリ)で、他より優先する理由は見当たりません。


ジャンクションポイントとシンボリックリンクはどちらも、再解析ポイントを使用してNTFSを通じて実装されます。MSDNによると、両者はAPIを介したファイル操作によって同じように扱われます。
surfasb

2
@surfasb:ただし、シンボリックリンクが特にサポートされていない(およびそのように認識されている)場合、バックアップからの復元中にシンボリックリンクとして再作成されません。
haimg

ああ、非常に良い点です!私は先を十分に考えていませんでした。
surfasb

私の知る限り、これは古いWindows OSがボリュームにアクセスする場合により重要です。
can-ned_food

1

NTFSジャンクションはディレクトリのみを指すことができますが、シンボリックリンクはファイルに対しても機能します。


ただし、ファイルの場合は、代わりにハードリンクを使用できます。
パラドロイド

0

私が気づいた1つの違いがあります:

スクリプト、ポータブルアプリなどの同期ディレクトリがあります。バッチスクリプトを使用して、スタートメニューディレクトリにポータブルアプリケーションのショートカットのディレクトリを指すジャンクションを作成します。

ジャンクションを使用すると、ショートカットを[スタート]メニューに表示できます。代わりにシンボリックリンクを使用すると、機能しません。


奇妙なことに、これは私には問題ありません。また、フラッシュドライブへのシンボリックリンクがマシンに接続されています。
surfasb

@surfasb:私が説明したことをやっていると確信していますか?[スタート]メニューディレクトリへのシンボリックリンクが指すディレクトリ内のショートカットは、[スタート]メニューに表示されません。代わりにジャンクションが使用されている場合に実行されます。
パラドロイド

それを正しく読んだかどうかわからない。それでは、スタートメニューで、ショートカットを含むフォルダーを指すシンボリックリンクですか?私は今それを試しました。ショートカットを使用してUNCパス上のフォルダーを指しているuncパス上の別のシンボリックリンクを指すシンボリックリンクも取得しました。もちろん、それはショートカットを壊します。ただし、Windowsではデフォルトで「リモートからリモートへ」のシンボリックリンクトラバーサルは無効になっています。
surfasb

0

コメントのどこかで見落としていたかもしれませんが、Windowsのシンボリックリンクとジャンクションの非常に重要な違いの1つは、両方を作成するために必要な特権です。デフォルトではシンボリックリンクはデフォルトユーザーが持たない特別な権限を使用してのみ作成できますが、ジャンクションはすべてのデフォルトユーザーOOBによって簡単に作成できるため、dirsの優先リンクタイプです。

デフォルトでは、Administratorsグループのメンバーにこの権利があります。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.