我有一个 Win10 文件服务器,它通过网络共享托管代码存储库等内容。
我在 Linux(主要是 CentOS 或 Lubuntu)上进行所有编码和开发,因此我发现了非常有用的:
mount -t cifs....
命令使我可以轻松挂载 Windows 共享。但我遇到的问题是尝试从共享安装内的来宾创建符号链接。具体来说,诸如此类的事情automake --add-missing
会失败,因为它尝试创建指向诸如此类的文件install-sh
和其他文件的符号链接。
我知道由于 Linux 和 Windows 之间的差异,存在一些复杂性,但我不确定是否存在可以在服务器(可能还有客户端)上启用的选项来允许此操作。
我读过一些书,但网上的其他答案对我来说似乎不太清楚。例如这篇文章:符号链接权限被拒绝,通过 cifs 共享文件夹, - 似乎表明有了该sfu (Services For Unix)
选项,应该是可以的。它表明 cifs 内核模块必须至少为1.4
.
我的 CentOS 7.1 机器上有版本2.03
,并尝试过:sudo mount -t cifs -o username=,password=,sfu //Remote_Server/Share /Share
但没有成功。我还打开了 Windows 中的权限,secpol
以允许我的 Windows 用户帐户创建符号链接。 (我不确定这是否是一个因素,以防万一实现尝试在两侧创建符号链接,但由于我的 Windows 帐户权限而无法创建)。我可以从 Windows cmd 提示符中执行此操作,以管理员身份运行,使用命令mklink
,但是当尝试在 Linux 来宾上创建标准符号链接时,这仍然会导致failed to create symbolic link:........Operation not supported
那么有什么方法可以让它与 CIFS 和我当前的解决方案一起工作吗?或者是否有任何解决方案可以以某种方式抽象出 Linux 和 Windows 上符号链接之间的差异,并允许安装的文件夹与任何其他文件夹一样在 Linux 客户机上使用?这可能吗?
答案1
如果您只想使用 Linux 上下文中的符号链接,则mfsymlinks
mount.cifs 的选项可能正是您所需要的:
mfsymlinks
Enable support for Minshall+French symlinks(see
http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks).
This option is ignored when specified together with the 'sfu' option.
Minshall+French symlinks are used even if the server supports the CIFS Unix
Extensions.
或者,将 mfsymlinks 添加到命令行挂载:
sudo mount -t cifs //ip.add.re.ss/share_name /path/to/mount -o username=hostusername,vers=3.0,uid=clientusername,gid=clientgroupname,soft,rsize=8192,wsize=8192,mfsymlinks
一些背景请参见这个问题。