web-dev-qa-db-ja.com

ネットワーク共有を介してNTFSジャンクションポイントを追跡できますか?

OS:Windows Server 2016

別のフォルダーYへのジャンクションポイントを含むフォルダーXがある場合(同じマシンと同じボリューム上)。次に、ネットワークを介してXを共有する場合、Xに接続するリモートユーザーはYにリダイレクトされますか?

ユースケースは、フォルダーの場所/名前Yが、スケジュールされたタスクの実行後に時々変更される場合です。ただし、リモートユーザーは常に同じネットワーク共有名(X)を使用する必要があります。タスクの実行中にジャンクションポイントを更新できました。

これを達成できる他の技術はありますか?次の方法である程度成功しました。Xという名前のネットワーク共有を再作成または更新し、Yを直接指すようにします。ただし、これはXが最上位の共有である場合にのみ機能します。

次の場合にも機能するソリューションを探しています。XをYの共有とします。次に、YにサブフォルダーAが含まれている場合、リモートユーザーはネットワークパスX\Aを介してそれにアクセスできます。しかし、X\Bなどのネットワークパスを介して、リモートユーザーがマシン上のまったく異なるパスにアクセスできる必要がある場合も必要です。したがって、Y\Bから別のパスへのジャンクションポイントを作成するという私の考え。 (リモートユーザーがX\B経由でアクセスする)

出来ますか?

1
Scrontch

はい、SMBファイルサーバーは自動的にディレクトリジャンクションをたどります(mklink /j)ターゲットが共有フォルダーの外部を指している場合でも、透過的に。 (実験的にテストされています。)

一方、サーバーはシンボリックリンクをたどりません(mklink /d)–クライアントに任され、デフォルトでもフォローされません(このオプションを有効にした場合、ターゲットは明らかに別の共有フォルダーである必要があります)。詳細については、harrymcの投稿を参照してください。

3番目のオプションとして、Windows Serverでは、共有を DFS名前空間 として作成できます。この場合、両方を通常のファイルにすることができます。別のサーバー上であっても、別の共有を指す可能性のあるファイルおよび特別な「参照」ディレクトリ。 (これらの紹介は常にクライアント側で行われ、すべてのWindowsバージョン、libsmbclient、さらにはLinux cifs.koで​​認識されます。)

フォルダYを別のマシンに移動する必要がある場合は、DFSがおそらく推奨されるオプションです。 (Active Directoryは必要ありませんが、すべてのファイルサーバーで共通の認証を行うと作業が簡単になります。)

1
user1686

デフォルトのクライアントWindowsは、シンボリックリンクのチェーンを禁止します。

その動作を制御するコマンドは fsutil であり、記事 Fsutilの動作 でさらに説明されています。

あなたが探している特定の振る舞いはSymlinkEvaluationという名前です。コマンドプロンプトにコマンドfsutil behavior query SymlinkEvaluationを入力すると、現在の値が表示される場合があります。以下は私のWindows10のデフォルトです:

enter image description here

SymlinkEvaluationの動作コードの名前はL2LL2RR2L、およびR2Rで、次のことを意味します。

  • Lは「ローカル」を表し、Rは「リモート」を表します
  • FIRST LまたはR-before2-は、リンク自体の場所を参照します(ターゲットではありません)。 リンクにアクセスしているマシンに対して
  • 2番目のLまたはR-after2-はリンクの場所を参照します LINK自体が配置されているマシンを基準にしたターゲット

たとえば、SymlinkEvaluation R2Lを設定すると、リンクへのアクセスを制御できるようになります。

  • リモートマシンにあります(R
  • 同じリモートマシン上のターゲットを指す(L

したがって、可能性は次のとおりです。

  1. ローカルからローカルへのシンボリックリンク、L2L:{0|1}
  2. ローカルからリモートのシンボリックリンク、L2R:{0|1}
  3. ローカルシンボリックリンクへのリモート、R2R:{0|1}
  4. リモートからリモートへのシンボリックリンク、R2L:{0|1}

ここで、0は無効を表し、1は有効を表します。

あなたが探しているかもしれないコマンドは:

fsutil behavior set SymlinkEvaluation R2L:1

これはサーバーではなくクライアントで行われることを覚えておいてください。

0
harrymc