Jump to content

NTFS-ссылки

(Перенаправлено из точки соединения NTFS )

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

Символические ссылки на каталоги или тома, называемые точками соединения и точками монтирования, были представлены в 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.

Существует три класса ссылок:

  • Жесткие ссылки , файлы которых имеют одну и ту же запись MFT ( inode ) в одной файловой системе. Они ведут себя так же, как жесткие ссылки в Unix или Linux, поскольку запись каталога ссылается на сам файл, поэтому переименование или удаление других записей, ссылающихся на файл, не влияет на ссылку.
  • Точки соединения являются точками повторной обработки и работают аналогично символическим ссылкам в Unix или Linux, но определяются только для каталогов и могут быть только абсолютными путями в локальных файловых системах. Они создаются и ведут себя аналогично жестким ссылкам, за исключением того, что если целевой каталог будет переименован, перемещен или удален, ссылка перестанет быть действительной. [1] [2]
  • Символические ссылки — это точки повторной обработки , которые работают аналогично точкам соединения или символическим ссылкам в Unix или Linux и принимают относительные пути и пути к файлам, а также каталогам. Поддержка путей к каталогам и UNC была добавлена ​​в NTFS 3.1.

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

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

Жесткие ссылки создают новую запись каталога, ссылающуюся на ту же запись MFT и увеличивающую счетчик ссылок на запись MFT. Это означает, что они ограничены файлами в одной и той же файловой системе, но исходный файл можно удалить, не делая жесткую ссылку недействительной, поскольку удаление уменьшает счетчик ссылок на единицу, и файл не удаляется в MFT, пока счетчик не достигнет нуля.

Ярлыки файлов

[ редактировать ]

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

Реализации unix-подобных сред для Windows, таких как Cygwin и Mingw, могут использовать файлы ярлыков для эмуляции символических ссылок там, где операционная система хоста их не поддерживает, если это настроено.

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

[ редактировать ]

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

[ редактировать ]
  • Магазин компонентов Windows ( WinSxS ) использует жесткие ссылки для отслеживания различных версий DLL, хранящихся на жестком диске.
  • Базовые установки Windows Server 2008 использовали символические ссылки для перенаправления \Users\All Users\ → \ProgramData\.
  • Начиная с Windows Vista , все версии Windows использовали определенную схему встроенных каталогов и использовали скрытые соединения для обеспечения обратной совместимости с Windows XP и более ранними версиями. Примеры таких соединений:
    • C:\Documents and Settings указывая на C:\Users
    • %USERPROFILE%\Application Data указывая на %USERPROFILE%\AppData\Roaming
    • %USERPROFILE%\My Documents\My Pictures указывая на %USERPROFILE%\Pictures

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

[ редактировать ]

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

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

[ редактировать ]

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

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

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

[ редактировать ]

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

Инструменты командной строки

[ редактировать ]

Windows поставляется с несколькими инструментами, позволяющими создавать ссылки NTFS и управлять ими.

  • PowerShell : New-Item командлет Windows PowerShell , который может создавать пустые файлы, папки, соединения и жесткие ссылки. [3] В PowerShell 5.0 и более поздних версиях он также может создавать символические ссылки. [4] Get-Item и Get-ChildItem Командлеты можно использовать для опроса объектов файловой системы и, если они являются ссылками NTFS, поиска информации о них. Remove-Item командлет может удалить указанные элементы, хотя были зафиксированы ошибки, мешавшие этому командлету работать должным образом. [5]
  • Командная строка Windows . Начиная с Windows Vista и Windows Server 2008, mklink Внутренняя команда может создавать соединения, жесткие ссылки и символические ссылки. [6] Эта команда также доступна в ReactOS . [7] Кроме того, почтенный dir Команда может отображать и фильтровать точки соединения через /aL выключатель. [8] Наконец, rd команда (также известная как rmdir) может удалять точки соединения.
  • fsutil.exe: утилита командной строки, представленная в Windows 2000 . Его hardlink Подкоманда может создавать жесткие ссылки или перечислять жесткие ссылки, связанные с файлом. [9] Еще одна подкоманда, reparsepoint, может запрашивать или удалять точки повторной обработки , объекты файловой системы, составляющие точки соединения, жесткие ссылки и символические ссылки. [10]

Кроме того, следующие утилиты могут создавать ссылки NTFS, даже если они не входят в состав Windows.

  • linkd: Это компонент Resource Kit для Windows 2000 и Windows Server 2003 . [11] Он может создавать точки соединения. [12]
  • соединение: бесплатная утилита командной строки от Microsoft, которая может создавать или удалять соединения. [2]
  • Расширения сообщества PowerShell (PSCX): размещены в галерее Microsoft PowerShell, [13] этот модуль добавляет несколько командлетов для работы со ссылками NTFS, в том числе: New-Hardlink, New-Junction, Get-ReparsePoint, Remove-ReparsePoint и New-Symlink. [14]

Для создания жестких ссылок приложения могут использовать CreateHardLink() Функция Windows API . Все версии семейства Windows NT могут использовать GetFileInformationByHandle() для определения количества жестких ссылок, связанных с файлом. С записью MFT может быть связано до 1024 ссылок. Аналогичным образом, Функция CreateSymbolicLink() может создавать символические ссылки. Соединения создавать сложнее. Они требуют ручного заполнения информации о точке повторной обработки . [15] Пример кода находится в libuv . [16] Соединения определяются только для каталогов: хотя API не дает сбоя при создании соединения, указывающего на файл, соединение не будет успешно интерпретироваться при дальнейшем использовании.

Переходы и символические ссылки, даже указывающие на каталоги, можно удалить с помощью pNtSetInformationFile. Реализация Libuv unlink в Windows демонстрирует это использование. [17] Альтернативно, .NET System.IO.Directory.Delete() Метод работает и на них. [18]

Опасности

[ редактировать ]

Последовательность

[ редактировать ]

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

Дополнительные опасности таятся в использовании соединений каталогов NTFS, которые:

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

Межобъемный обход

[ редактировать ]

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

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

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

X:\Some\Path> linkd Foo X:\Some\Other\Path

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

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

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

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

Ограничения

[ редактировать ]

Требования к привилегиям

[ редактировать ]

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

Время загрузки

[ редактировать ]

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

  • \Окна
  • \Windows\System32
  • \Windows\System32\Конфигурация

Другие важные файлы загрузки системы, такие как файл образа сна. hiberfil.sys, также не поддерживают перенаправление.

Определенные системой местоположения

[ редактировать ]

Технически возможно перенаправить следующие некритические системные папки:

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

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

Создание переходов для \Users, \ProgramData, \Program Files или \Program Files (x86) указание на другие места нарушает установку или обновление Windows. [23]

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

установщик Windows

[ редактировать ]

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

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ «Жесткие связи и соединения» . Разработчик Windows . Майкрософт . 31 мая 2018 г.
  2. ^ Jump up to: а б «Развязка v1.07» . Сисинтерналы . Майкрософт . 4 июля 2016 г.
  3. ^ «Новый элемент (PowerShell 3.0)» . Документы Майкрософт . Майкрософт . 22 июня 2020 г. Если ваше расположение находится на диске файловой системы, разрешены следующие значения: Если ваше расположение находится на диске файловой системы, разрешены следующие значения: File[,] Directory[,] Junction[,] HardLink
  4. ^ «Новый элемент (PowerShell 5.0)» . Документы Майкрософт . Майкрософт . 22 июня 2020 г.
  5. ^ «Исправить Remove-Item <символическая ссылка на каталог>» . Репозиторий PowerShell . Майкрософт . 4 марта 2016 г. — через GitHub .
  6. ^ "mklink.c" . репозиторий реакции . ReactOS Deutschland eV, 3 октября 2017 г. — через GitHub.com .
  7. ^ «Дир» . Документы Майкрософт . Майкрософт . 18 апреля 2012 г.
  8. ^ «Жёсткая ссылка Fsutil» . Документы Майкрософт . Майкрософт . 18 апреля 2012 г.
  9. ^ «Fsutil reparsepoint» . Документы Майкрософт . Майкрософт . 18 апреля 2012 г.
  10. ^ «Загрузка инструментов Windows Server 2003 Resource Kit» . Центр загрузки . 10 марта 2015 г. Архивировано из оригинала 10 марта 2015 г.
  11. ^ «Как создавать точки соединения NTFS и управлять ими» . 09.03.2015. Архивировано из оригинала 9 марта 2015 г.
  12. ^ «Пскх» . Галерея PowerShell . Майкрософт . 17 января 2018 г.
  13. ^ Хилл, Кейт; Грехан, Ойсин (17 января 2018 г.). "README.md" . репозиторий pscx — через GitHub .
  14. ^ «Ссылки NTFS, соединения каталогов и ярлыки Windows» . www.flexhex.com . Архивировано из оригинала 25 января 2021 года . Проверено 4 октября 2019 г.
  15. ^ "libuv/src/win/fs.c" . Гитхаб . Проверено 12 декабря 2019 г.
  16. ^ "libuv/src/win/fs.c fs__unlink" . Гитхаб . Проверено 12 декабря 2019 г.
  17. ^ «Удалить соединение PowerShell» . StackOverflow . Проверено 12 декабря 2019 г.
  18. ^ «Особенности программирования (Windows)» . msdn.microsoft.com .
  19. ^ «Форматы путей к файлам в системах Windows» . docs.microsoft.com .
  20. ^ «Символические ссылки в Windows 10! — Блог разработчиков WindowsБлог разработчиков Windows» . blogs.windows.com . 2 декабря 2016 г.
  21. ^ «Перемещение каталога Users и каталога ProgramData на диск, отличный от диска, содержащего каталог Windows» . Проверено 12 марта 2015 г.
  22. ^ «При попытке установить Windows 8.1 возникла ошибка из-за перенаправления папки «Пользователи» или «Program Files» в другой раздел» . Проверено 12 марта 2015 г.
  23. ^ Герман Шинагль (23 августа 2013 г.). «ln — жесткие ссылки командной строки — символические ссылки для Windows XP» .
  24. ^ «Инструмент создания ссылок/ . переходов »
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b45490a27f2db0f42ac216dca389ca11__1721255100
URL1:https://arc.ask3.ru/arc/aa/b4/11/b45490a27f2db0f42ac216dca389ca11.html
Заголовок, (Title) документа по адресу, URL1:
NTFS links - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)