Можно ли отслеживать точку соединения NTFS через сетевой ресурс?

Можно ли отслеживать точку соединения NTFS через сетевой ресурс?

ОС: Windows Server 2016

Если у меня есть папка X, содержащая точку соединения с другой папкой Y (на той же машине и том же томе). Тогда, если я предоставлю общий доступ к X по сети, будет ли удаленный пользователь, который подключается к X, перенаправлен в Y?

Вариант использования заключается в том, что местоположение/имя папки Y время от времени меняется после выполнения запланированной задачи. Но я бы хотел, чтобы удаленные пользователи всегда использовали одно и то же имя сетевого ресурса (X). Я мог бы обновить точку соединения во время выполнения задачи.

Есть ли какая-то другая технология, с помощью которой я мог бы этого добиться? У меня был некоторый успех со следующим методом: я воссоздаю или обновляю сетевой ресурс с именем X и указывающий напрямую на Y. Но это работает только в том случае, если X является ресурсом верхнего уровня.

Я ищу решение, которое также работает в следующем случае: пусть X будет общим ресурсом для Y. Тогда, если Y содержит подпапку A, удаленные пользователи могут получить к ней доступ через сетевой путь X\A. Но мне также нужен случай, когда через сетевой путь, скажем, X\B, удаленные пользователи должны иметь доступ к совершенно другому пути на машине. Отсюда моя идея создать точку соединения из Y\B в другой путь. (к которому удаленные пользователи будут получать доступ через X\B)

Является ли это возможным?

решение1

Да, файловый сервер SMB будет автоматически следовать соединениям каталогов ( mklink /j) прозрачно, даже если цель указывает за пределы общей папки. (Проверено экспериментально.)

С другой стороны, сервер не будет следовать символическим ссылкам ( mklink /d) – это оставлено на усмотрение клиента, который также не будет следовать им по умолчанию (и если вы включите эту опцию, целью, очевидно, должна быть другая общая папка). См. пост harrymc для получения дополнительной информации.

В качестве третьего варианта на Windows Server вы можете создать общий ресурс какПространство имен DFS, в котором вы можете иметь как обычные файлы, так и специальные «ссылочные» каталоги, которые могут указывать на другой общий ресурс – даже на другом сервере. (Эти ссылки всегда отслеживаются на стороне клиента и распознаются всеми версиями Windows; libsmbclient; и даже Linux cifs.ko.)

DFS, вероятно, является предпочтительным вариантом, если когда-либо потребуется переместить папку Y на другой компьютер. (Для этого не требуется Active Directory, хотя общая аутентификация на всех файловых серверах упрощает задачу.)

решение2

Клиентская система Windows по умолчанию запрещает цепочки символических ссылок.

Команда, которая управляет этим поведением, — fsutil, далее документировано в статье Поведение Fsutil.

Конкретное поведение, которое вы ищете, называется SymlinkEvaluation. Вы можете увидеть его текущее значение, введя в командной строке команду fsutil behavior query SymlinkEvaluation. Ниже приведены значения по умолчанию в моей Windows 10:

введите описание изображения здесь

Коды поведения SymlinkEvaluationимеют названия L2L, L2R, R2L, и R2R, что означает следующее:

  • Lозначает «локальный» и R«удалённый»
  • ПЕРВЫЙ Lили R-до- 2относится к местоположению самой ссылки (а не к ее цели)относительно машины, ОСУЩЕСТВЛЯЮЩЕЙ ДОСТУП к ссылке.
  • ВТОРОЙ Lили R-после- 2относится к местоположению ссылкицель относительно машины, на которой находится сама ССЫЛКА.

Например, настройка 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

Просто помните, что это нужно делать на клиенте, а не на сервере.

решение3

Сентябрь 2022 г.: похоже, что соединения через общий сетевой ресурс перестали работать.

https://learn.microsoft.com/en-us/sysinternals/downloads/junction

Последнее обновление: 19.07.2022

Примечание

Windows не поддерживает соединения с каталогами на удаленных общих ресурсах.

Раньше я создавал соединения на своем сетевом сервере, указывающие на другой диск. Все работало нормально. Я не пользовался им некоторое время до сих пор, но что-то сломалось.

  • На стороне клиента двойной щелчок по значку перекрестка не дает никакой реакции — ничего не отображается и не меняется.
  • На стороне клиента «Свойства» показывают соединение как папку, но в ней 0 байтов и 0 файлов.
  • Щелчок правой кнопкой мыши по значку и выбор «Открыть в новом окне» не приводит к какой-либо реакции.
  • Ни «Подключить сетевой диск», ни прямой переход к \server\share не помогли

На стороне сервера выполнение этих действий не помогло:

  • Настройка нового общего доступа для целевого перекрестка.
  • Начать заново, создать новую связку, новый общий ресурс, сбросить вкладку «Безопасность»

Windows 10 Pro 21H2 19044.1889 Пакет возможностей Windows 120.2212.4180.0

Слава великому Microsoft за создание еще одной функции повышения производительности.

Связанный контент