Символическая ссылка 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].
Команда 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]
Символические ссылки не работают при загрузке, поэтому невозможно перенаправить, например:
Установщик Windows не полностью поддерживает символические ссылки. Перенаправление \Windows\Installer приведет к сбою большинства .msi-based установщиков Windows с ошибкой 2755 и/или ошибкой 1632. Тем не менее, можно перенаправить:
Создание символических ссылок для \Users и \ProgramData, указывающих на другой диск, не рекомендуется, так как это нарушает обновления и магазин приложений Windows.[4]
Создание символических ссылок для \Users, \ProgramData, «\Program Files» или «\Program Files (x86)», указывающих на другие местоположения, прерывает установку соответственно обновления Windows.[5]
Создание символических ссылок для «\Program Files» или « \Program Files (x86)», указывающих на другой диск, нарушает обслуживание компонентов Windows, которое связывает жесткими ссылками файлы из своего хранилища \Windows\WinSxS в их каталог установки.
Поскольку Windows XP использует ту же версию формата NTFS, что и более поздние версии, в ней можно включить поддержку символических ссылок. Для использования символических ссылок NTFS под Windows 2000 и XP существует сторонний драйвер, который осуществляет это, устанавливая себя как фильтр файловой системы.[6][7]