Символическая ссылка NTFS

Символическая ссылка NTFS (также «симлинк», от англ. Symbolic link) – это объект файловой системы в файловой системе NTFS, который указывает на другой объект файловой системы. Указываемый объект называется целью. Символические ссылки должны быть понятными для пользователей; ссылки отображаются в виде обычных файлов или каталогов и могут быть обработаны пользователем или приложением точно так же. Символические ссылки на каталоги или тома, называемые точкой соединения или точкой монтирования, были введены начиная с NTFS 3.0, которая поставляется с Windows 2000. Начиная с NTFS 3.1 и выше символические ссылки могут быть созданы для любого вида объекта файловой системы. NTFS 3.1 была представлена вместе с Windows XP, но функциональность не была доступна (через ntfs.sys) для приложений пользовательского режима. Драйверы фильтров сторонних производителей, такие как драйвер с открытым исходным кодом Masatoshi Kimura, однако могут быть установлены, чтобы сделать эту функцию доступной и в пользовательском режиме. ntfs.sys, выпущенный с Windows Vista, сделал функциональность доступной для приложений пользовательского режима по умолчанию.

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

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

Ограничения

[править | править код]

Параметры безопасности по умолчанию в Windows Vista/Windows 7 запрещают администраторам без повышенных прав и всем тем, кто не является администраторами, создавать символические ссылки. Этот режим можно изменить, запустив «secpol.msc» консоль управления локальной политикой безопасности (в разделе Параметры безопасности\Локальные политики\назначение прав пользователя\создание символьных ссылок). Его можно обойти, запустив cmd.exe с запуском от имени администратора или командой runas. Начиная с Windows 10 Insiders, построенном на 14972, требование о повышенных правах администратора было убрано, что позволило создавать символические ссылки без необходимости повышения консоли в качестве администратора [1].

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

[править | править код]

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

Синтаксис команды:

mklink [[/d] | [/h] | [/j]] <Link> <Target>
  • /d – этот параметр создает символическую ссылку на каталог. Команда mklink по умолчанию создает символическую ссылку на файл.
  • /h – этот параметр создает жесткую ссылку вместо символической ссылки.
  • /j – этот параметр создает соединение для каталогов.
  • <Link> – этот параметр указывает имя создаваемой символической ссылки.
  • <Target> – этот параметр указывает путь, на который ссылается новая символическая ссылка.
  • /? – этот параметр отображает справку.

В Windows XP утилита junction, созданная Марком Руссиновичем, способная работать с точками повторной обработки, сейчас предлагается Microsoft как часть пакета Sysinternals. Windows предоставляет функцию CreateSymbolicLink в своем API, начиная с Windows Vista. Поскольку команда mklink зависит от cmd.exe, может быть невозможным использовать ее во всех контекстах. Функция New-SymLink использует вышеупомянутый API для реализации функциональности мягкой ссылки с помощью PowerShell . Расширение сообщества также содержит функцию New-SymLink.

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

[править | править код]

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

Недостатки

[править | править код]

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

  • папку, содержащую «hiberfil.sys» (если он настроен вне корневого каталога)
  • \Windows
  • \Windows\system32
  • \Windows\system32\Config

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

  • \Documents and Settings
  • \ProgramData
  • \Program Files
  • \Program Files (x86)
  • \Users

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

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

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

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

[править | править код]

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

Примечания

[править | править код]
  1. Symlinks in Windows 10! - Windows Developer BlogWindows Developer Blog. blogs.windows.com. Дата обращения: 4 июня 2019. Архивировано 5 июня 2019 года.
  2. Archiveddocs Mklink. technet.microsoft.com. Дата обращения: 4 июня 2019. Архивировано 25 сентября 2017 года.
  3. Programming Considerations (Windows). msdn.microsoft.com. Дата обращения: 4 июня 2019. Архивировано 10 июля 2010 года.
  4. Relocation of the Users directory and the ProgramData directory to a drive other than the drive that contains the Windows directory. Дата обращения: 12 марта 2015. Архивировано 10 февраля 2015 года.
  5. You encounter an error when trying to install Windows 8.1 due to redirecting the Users or Program Files folder to another partition. Дата обращения: 12 марта 2015. Архивировано 7 января 2015 года.
  6. Hermann Schinagl. ln - commandline hardlinks - Symbolic links for Windows XP (23 августа 2013). Дата обращения: 4 июня 2019. Архивировано 4 июня 2019 года.
  7. リンク/ジャンクション作成ツール. Дата обращения: 4 июня 2019. Архивировано 21 октября 2019 года.