我直接使用命令在SMB卷上创建一个测试的链接,命令和返回的信息如下(注意该命令的/d选项需要使用管理员权限运行,否则会直接返回Access is denied,详见底部注意事项):
C:\Users\luojia> mklink /d "\\smb创建目标路径" "\\smb上被链接的目录" You do not have sufficient privilege to perform this operation.
我已经使用管理员身份运行了,依然提示权限不足,那么就说明并不是我本机的权限不足,而是host端的权限问题了。进到SMB宿主机系统里,看了看共享权限和文件夹权限都已经全部给足了,问题也不在这里。
刚刚我查了一下,发现其实并不是SMB协议上没有能力创建符号链接,而是对于这个操作还有一个额外的选项对其进行权限控制。
修改方法很简单:
到这里应该已经完成了链接的创建,如果还有问题就接着看下文。
这里是一些mklink相关的注意事项和额外说明:
如果你在创建符号链接的时候还遇到类似被禁用的提示,比如“The symbolic link cannot be followed because its type is disabled”,可以使用以下命令查看一下策略设定:
fsutil behavior query SymlinkEvaluation
我这里已经设置过了,所以显示的是
Local to local symbolic links are enabled. Local to remote symbolic links are enabled. Remote to local symbolic links are enabled. Remote to remote symbolic links are enabled.
但默认并不是全部启用的,如果你不关心每个条目的意义,可以使用以下命令把它们全部开启
fsutil behavior set SymlinkEvaluation L2L:1 fsutil behavior set SymlinkEvaluation L2R:1 fsutil behavior set SymlinkEvaluation R2L:1 fsutil behavior set SymlinkEvaluation R2R:1
这些设置具体的含义可以参考微软官方文档:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/fsutil-behavior