Ссылки NTFS

редактировать
(Перенаправлено из точки соединения NTFS ) «Точка соединения» перенаправляется сюда. Чтобы узнать о студии видеоигр, см. Junction Point Studios.

Файловая система NTFS определяет различные способы ссылки на файлы, то есть, чтобы сделать точку файла в другой файл или его содержание. Указанный объект называется целью. Есть три класса ссылок:

  • Жесткие ссылки, файлы которых имеют одну и ту же запись MFT ( индексный дескриптор ) в одной файловой системе.
  • Символические ссылки, которые записывают путь к другому файлу, который должно отображаться в содержимом ссылок. Может принимать относительные пути. Сеть SMB ( путь UNC ) и поддержка каталогов добавлены в NTFS 3.1.
  • Точки соединения, которые похожи на символические ссылки, но определены только для каталогов. Принимает только локальные абсолютные пути.

Все ссылки NTFS разработаны так, чтобы быть прозрачными для приложений. Это означает, что приложение, обращающееся к ссылке, будет легко перенаправлено драйвером файловой системы, и никакой специальной обработки не требуется. Для пользователей они отображаются как обычные каталоги или файлы. Это также приводит к эффекту псевдонима : запись в ссылку передает запись в базовый связанный файл или запись MFT.

Символические ссылки и точки соединения, которые должны нести дополнительные данные, включая путь, на который они указывают, основаны на точках повторной обработки NTFS. Их характер записи пути означает, что они могут ссылаться на файлы на других томах или даже на удаленные файлы. С другой стороны, жесткие ссылки создаются просто путем присвоения записи в MFT нового имени файла, поэтому она ограничивается файлами в той же файловой системе.

Символьная ссылка NTFS - это не то же самое, что файл ярлыка Windows, который является обычным файлом. Последний может быть создан в любой файловой системе (например, в более ранней FAT32 ), может содержать метаданные (например, значок, отображаемый при просмотре ярлыка в проводнике Windows ) и непрозрачен для приложений.

Содержание
  • 1 История
  • 2 Ограничения и недостатки
    • 2.1 Файлы без соединения
  • 3 Примеры использования
    • 3.1 Встроенное использование
    • 3.2 Перенаправление программы
    • 3.3 Экономия места на диске
    • 3.4 Обход предопределенных путей
    • 3.5 Опасности отмены отложенного целевого объекта
  • 4 Инструменты командной строки и API
    • 4.1 Удаление
    • 4.2 Перечень узлов
  • 5 Другая недвижимость
  • 6 Ограничения
  • 7 Поддержка символьных ссылок в Windows XP
  • 8 См. Также
  • 9 ссылки
  • 10 Внешние ссылки
История

Символические ссылки на каталоги или тома, называемые точками соединения и точками монтирования, были введены с NTFS 3.0, поставляемой с Windows 2000. Начиная с NTFS 3.1, символические ссылки можно создавать для любого типа объекта файловой системы. NTFS 3.1 была представлена ​​вместе с Windows XP, но эта функциональность не была доступна (через ntfs.sys) для приложений пользовательского режима. Однако сторонние драйверы фильтров, такие как senableдрайвер с открытым исходным кодом Масатоши Кимуры, могут быть установлены, чтобы сделать эту функцию доступной и в пользовательском режиме. Ntfs.sys, выпущенный вместе с Windows Vista, по умолчанию сделал функциональность доступной для приложений пользовательского режима.

Начиная с NTFS 3.1 символическая ссылка также может указывать на файл или удаленный сетевой путь SMB. В то время как точки соединения NTFS поддерживают только абсолютные пути на локальных дисках, символические ссылки NTFS допускают связывание с использованием относительных путей. Кроме того, реализация символической ссылки NTFS обеспечивает полную поддержку ссылок между файловыми системами. Однако функциональность, разрешающая символические ссылки между хостами, требует, чтобы удаленная система также поддерживала их, что фактически ограничивает их поддержку Windows Vista и более поздних операционных систем Windows.

Ограничения и недостатки

Параметры безопасности по умолчанию в Windows Vista / Windows 7 запрещают администраторам без повышенных прав и всем не администраторам создавать символические ссылки, но не переходы. Это поведение можно изменить, запустив secpol.msc в консоли управления локальной политикой безопасности (в разделе: Параметры безопасности \ Локальные политики \ Назначение прав пользователя \ Создание символических ссылок). Это можно обойти, запустив cmd.exe с параметром « Запуск от имени администратора» или runas командой. Начиная с Windows 10 Insiders build 14972, требование повышенных прав администратора было удалено в Windows «Режим разработчика», что позволило создавать символические ссылки без необходимости повышать права консоли с правами администратора. На уровне API SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEдля этого предоставляется флаг.

Несоединяемые файлы

Ни процесс запуска Windows NT, ни процесс запуска Windows Vista не поддерживают точки соединения, поэтому невозможно перенаправить определенные системные папки:

  • \ Windows
  • \ Windows \ System32
  • \ Windows \ Config

Однако можно перенаправить некритические папки:

  • \ Пользователи
  • \Документы и настройки
  • \Программные файлы
  • \ Program файлы (x86)

Создание соединений для \ Users и \ ProgramData, указывающих на другой диск, не рекомендуется, поскольку это нарушает обновления и приложения Магазина Windows.

Создание соединений для \ Users, \ ProgramData, "\ Program Files" или "\ Program Files (x86)", указывающих на другие места, прерывает установку или обновление Windows.

Создание соединений для «\ Program Files» или «\ Program Files (x86)», указывающих на другой диск, нарушает компонентное обслуживание Windows, которое жестко связывает файлы из своего репозитория \ Windows \ SxS с их установочным каталогом.

Примеры использования

Встроенное использование

  • Магазин компонентов Windows ( WinSxS ) использует жесткие ссылки для отслеживания различных версий библиотек DLL, хранящихся на жестком диске.
  • Символьные ссылки есть в Windows Server 2008 для \Users\All Users\ -gt; \ProgramData\перенаправления (при базовой установке).

Перенаправление программы

Установив точку соединения, которая указывает на каталог, содержащий конкретную версию программного обеспечения, можно будет добавить другую версию программного обеспечения и перенаправить точку соединения, чтобы указать на желаемую версию.

Экономия места на диске

Содержимое соединения почти не занимает места на диске (они просто указывают на исходный каталог). Если вам нужно иметь несколько точек входа в большой каталог, точки соединения хорошо подходят для этой цели. Точки соединения не следует путать с копией чего-либо, поскольку соединения просто указывают на оригинал. Если каталоги необходимо изменить отдельно, соединение не может быть использовано, поскольку оно не обеспечивает отдельной копии каталога или файлов внутри.

Точно так же символические ссылки и жесткие ссылки полезны для объединения содержимого отдельных файлов.

Обход предопределенных путей

Поскольку переустановка Windows (или установка новой версии) часто требует удаления содержимого диска C:, рекомендуется создать несколько разделов, поэтому во время установки необходимо удалить только один раздел. Однако некоторые программы не позволяют пользователю выбирать каталог для установки или устанавливать некоторые из своих файлов на диск C:, даже если они установлены на другой диск. Создав точку соединения, программу можно обманом установить в другой каталог.

Опасности отмены отложенного целевого объекта

Существенные опасности таятся в использовании схем жестких ссылок, которые либо:

  • включает в себя ссылку, которые ссылаются на свои родительские папки, например, создание жесткой ссылки, X:\path\to\parentкоторая указует либо X:\path\или X:\path\to\, или
  • укажите цели, используя буквы диска тома, например X:, в X:\some\path\.

Проблема в первом случае заключается в том, что он создает рекурсивные пути, что в дальнейшем подразумевает бесконечную рекурсию в структуре каталогов. При введении повторного входа наличие одного или нескольких соединений каталогов изменяет структуру файловой системы с простого правильного дерева на ориентированный граф, но рекурсивное связывание еще больше усложняет теоретико-графовый характер с ациклического на циклический. Поскольку одни и те же файлы и каталоги теперь можно встретить по нескольким путям, приложения, которые наивно пересекают реентерабельные или рекурсивные структуры, могут давать неверные или несогласованные результаты или могут никогда не завершиться. Хуже того, при рекурсивном удалении такие программы могут попытаться удалить родительский элемент каталога, который они в настоящее время просматривают.

Обратите внимание, что оба перечисленных выше условия существуют в системе жестких ссылок, установленных на C:диске при установке Windows по умолчанию. Например, каждая установка Windows 10 определяет рекурсивный путь:

C:\ProgramData\ C:\ProgramData\Application Data\ C:\ProgramData\Application Data\Application Data\ C:\ProgramData\Application Data\Application Data\Application Data\ C:\ProgramData\Application Data\Application Data\Application Data\Application Data\ C:\ProgramData\Application Data\Application Data\Application Data\Application Data\Application Data\...

Каждый дополнительный путь в этом, казалось бы, бесконечном наборе - это действительный действительный путь Windows, который относится к тому же месту. На практике имена путей ограничены 260-символьным пределом пути DOS (или более новым 32 767-символьным ограничением), но усечение может привести к неполному или недопустимому пути и именам файлов. Всякий раз, когда копия установки Windows архивируется с неповрежденными соединениями каталогов на другой том на том же или, что еще хуже, другом компьютере, архивная копия может по-прежнему включать в себя активные папки из запущенной установки. Например, в зависимости от метода копирования, резервная копия диска Windows X:\archive\...будет содержать жесткую ссылку, X:\archive\Users\USERNAME\My Documentsкоторая по-прежнему указывает на папку C:\Users\USERNAME\Documents\в текущей активной установке.

Вторая форма отложенного целевого неверного направления, хотя концептуально проще, может иметь более серьезные последствия. Когда самосогласованный том или структура каталогов, содержащая жесткие ссылки, в которых используются имена путей с буквами дисков, копируются или перемещаются на другой том (или когда буква диска тома переназначается каким-либо другим способом), такие ссылки могут больше не указывать к соответствующей цели в скопированной структуре. И снова результаты зависят от программного обеспечения, которое использовалось для копирования; в то время как некоторые программы могут вмешиваться, изменяя любые полностью включенные жесткие ссылки в копии, чтобы сохранить структурную согласованность, другие могут игнорировать, точно копировать или даже переходить по жестким ссылкам, копируя их содержимое.

Серьезные проблемы возникают, если жесткие ссылки копируются именно так, что в новой копии они становятся жесткими ссылками между томами, которые по-прежнему указывают на исходные файлы и папки на исходном томе. Непреднамеренные жесткие ссылки между томами, такие как жесткие ссылки в «архивной» папке, которые по-прежнему указывают на места на исходном томе (в соответствии с буквой диска), являются катастрофами, ожидающими своего часа. Например, удаление того, что намного позже будет считаться неиспользуемым архивным каталогом на неиспользуемом резервном томе, может привести к удалению текущих, активных данных пользователя или системных файлов.

Профилактическая мера для опасности буквы диска заключается в использовании синтаксиса пути GUID тома, а не путей, содержащих буквы дисков тома, при указании целевого пути для соединения каталогов. Например, рассмотрите возможность создания псевдонима для X:\Some\Other\Pathat X:\Some\Path\Foo:

X:\Some\Pathgt;linkd Foo X:\Some\Other\Path

Как описано выше, если структура папок, содержащая результирующую ссылку, перемещается на диск с буквой диска, отличной от буквы X:, или если буква изменяется на X:самом диске, содержимое данных в целевом расположении уязвимо для случайного повреждения или злонамеренного злоупотребления.. Более устойчивая версия этой ссылки может частично снизить этот риск, ссылаясь на целевой том по его значению идентификатора GUID (который можно обнаружить, запустив fsutil volume listкоманду).

X:\Some\Pathgt;linkd Foo \\?\Volume{12345678-abcd-1234--abcdefghijkl}\Some\Other\Path

Это гарантирует, что соединение останется действительным, если буква диска X:будет изменена любым способом.

Что касается упреждающих средств предотвращения сбоев соединения каталогов, команда dir /AL /S /B "X:\Some\Path"может использоваться для получения, для тщательного анализа перед совершением каких-либо необратимых изменений файловой системы, списка всех жестких ссылок "ниже" определенного местоположения файловой системы. Хотя по определению каждая ссылка в результирующем списке имеет имя пути, которое начинается с X:\Some\Path\, если какая-либо из этих жестких ссылок содержит цель, которая не входит в состав X:\Some\Path, то указанная область была экранирована, а начальный каталог, который вы указали, не полностью - поголовье. В этом случае могут быть указаны дополнительные меры предосторожности, поскольку указанный каталог включает файлы и каталоги, которые находятся на других физических томах или чей собственный родительский переход к корню не включает указанный каталог.

Инструменты командной строки и API
mklink
Разработчики) Microsoft, участники ReactOS
изначальный выпуск 30 января 2007 г. ; 13 лет назад ( 2007-01-30)
Операционная система Windows, ReactOS
Тип Команда
Лицензия Windows: проприетарное коммерческое программное обеспечение ReactOS: стандартная общественная лицензия GNU
Интернет сайт документы.microsoft.com / en-us / windows-server / Administration / windows-commands / mklink

Команда mklinkиспользуется для создания символической ссылки. Это встроенная команда cmd.exeв Windows Vista и более поздних версиях. Команда также доступна в ReactOS.

Командный синтаксис:

mklink [[/d] | [/h] | [/j]] lt;Linkgt; lt;Targetgt;
  • /d- Этот параметр создает символическую ссылку на каталог. mklink по умолчанию создает символическую ссылку на файл.
  • /h - Этот параметр создает жесткую ссылку вместо символьной ссылки.
  • /j - Этот параметр создает соединение каталогов.
  • lt;Linkgt; - Этот параметр указывает имя создаваемой символической ссылки.
  • lt;Targetgt; - Этот параметр указывает путь, на который ссылается новая символическая ссылка.
  • /? - Этот параметр отображает справку.

В комплекты ресурсов Windows 2000 и Windows 2003 входит программа под названием linkd для создания точек соединения. В Windows XP утилита Марка Руссиновича способна работать с точками повторной обработки, теперь она предлагается Microsoft как часть пакета Sysinternals. junction

Windows предоставляет функцию CreateSymbolicLink в своем API, начиная с Windows Vista. New-SymLink функция использует вышеупомянутый API для реализации функциональности программных ссылок с помощью PowerShell. Расширения сообщества также содержат функцию New-SymLink.

Для жестких ссылок в Win32 API есть аналогичная функция CreateHardLink. Все версии Windows NT могут использовать GetFileInformationByHandle()для определения количества жестких ссылок, связанных с файлом. С записью MFT может быть связано до 1024 ссылок.

Соединения сложнее создать. Они требуют ручного заполнения информации о точках повторной обработки. Пример кода находится в libuv. Соединения определены только для каталогов: хотя API не дает сбоев при создании соединения, указывающего на файл, соединение не будет успешно интерпретировано при использовании позже.

Удаление

Во всех поддерживающих их версиях Windows жесткие и символические ссылки можно безопасно удалить, как и обычные файлы. Однако при запросе на удаление перекрестка проводник Windows до Windows Vista проследит за каталогом и удалит все его содержимое вместе с ним.

Чтобы правильно удалить только соединение, можно использовать rmdirкоманду в CMD из Windows Vista или новее. В качестве альтернативы можно использовать fsutil reparsepoint deleteкоманду в fsutil. В Windows PowerShell была аналогичная проблема с соединениями.

На уровне API соединения и символические ссылки, даже указывающие на каталоги, могут быть удалены с помощью pNtSetInformationFile. Реализация Libuv для unlinkWindows демонстрирует это использование. В качестве альтернативы и с System.IO.Directory::Deleteними работает метод.NET.

Листинг перекрестков

Список всех соединений, присутствующих в текущем каталоге, можно получить из командной строки с повышенными привилегиями от имени администратора, выполнив dir /aL, а список всех соединений, присутствующих на томе диска, выполнив dir /aL /s C:\, где «C:» - это том для сканирования..

Другие свойства

Символические ссылки могут указывать на несуществующие цели, потому что операционная система не проверяет, существует ли цель.

Ограничения

Символьные ссылки не работают при загрузке, поэтому перенаправление невозможно, например:

  • hiberfil.sys
  • \ Windows
  • \ Windows \ system32
  • \ Windows \ system32 \ Config

Установщик Windows не полностью поддерживает символические ссылки. Перенаправленный \ Windows \ Installer приведет к сбою большинства установщиков Windows на основе.msi с ошибкой 2755 и / или ошибкой 1632.

Тем не менее перенаправить можно:

  • \Документы и настройки
  • \Данные программы
  • \Программные файлы
  • \ Program файлы (x86)
  • \ Пользователи

Создание символических ссылок для \ Users и \ ProgramData, указывающих на другой диск, не рекомендуется, поскольку это нарушает обновления и приложения Магазина Windows.

Создание символических ссылок для \ Users, \ ProgramData, "\ Program Files" или "\ Program Files (x86)", указывающих на другие места, прерывает установку, соответственно. апгрейд винды.

Создание символических ссылок для «\ Program Files» или «\ Program Files (x86)», указывающих на другой диск, нарушает компонентное обслуживание Windows, которое жестко связывает файлы из своего репозитория \ Windows \ WinSxS с их установочным каталогом.

Поддержка символьных ссылок в Windows XP

Поскольку Windows XP использует ту же версию формата NTFS, что и более поздние выпуски, можно включить в ней поддержку символических ссылок. Для использования символических ссылок NTFS в Windows 2000 и XP существует драйвер стороннего производителя, который устанавливает себя как фильтр файловой системы.

Смотрите также
Ссылки
внешние ссылки
Последняя правка сделана 2024-01-10 03:04:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте