Создание символических ссылок требует SeCreateSymbolicLinkPrivilege, если только система не находится в режиме разработчика и WinAPI CreateSymbolicLink
вызывается с флагом SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
(*).Команда CMD mklink
использует этот флаг в Windows 10. Очевидно, что Java JRE версии 1.8.0_201 этого не делает.
Что касается WSL, она наследует контекст безопасности, из которого она запускается.При запуске из входа в систему с SeCreateSymbolicLinkPrivilege последние версии WSL будут создавать обычные символические ссылки Windows на томе drvfs (например, NTFS).В противном случае WSL использует пользовательский тип символической ссылки, основанный на точке повторного анализа IO_REPARSE_TAG_LX_SYMLINK
(0xA000001D) вместо обычной точки повторного анализа IO_REPARSE_TAG_SYMLINK
(0xA000000C).Вы можете запросить тип точки повторной обработки с помощью команды fsutil reparsepoint query <filename>
.
(*). В документах говорится: «[s] установите этот флаг, чтобы разрешить создание символических ссылок, когда процесс не повышен»,Точнее, этот флаг позволяет создавать символические ссылки без SeCreateSymbolicLinkPrivilege, что связано только с «повышением» системных настроек по умолчанию.Лично я предоставляю эту привилегию группе «Прошедшие проверку», и в этом случае создание символических ссылок не требует повышения до полного доступа администратора.