Windows/CIFS 服务器和 Linux 客户端的符号链接支持

Windows/CIFS 服务器和 Linux 客户端的符号链接支持

我有一个 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 上下文中的符号链接,则mfsymlinksmount.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

一些背景请参见这个问题

相关内容