我经常在 Linux 服务器上创建目录,其中符号链接用于子目录或文件的替代名称(例如,维护指向最新版本目录的“最新”符号链接,但也用于“Philips”链接到“NXP/Historic”等)...但是当由 Samba 客户端看到时(假设允许跟踪符号链接),没有任何迹象表明这些目录中的文件实际上是相同的...甚至 inode 编号(当由另一个使用 samba 共享的 Linux 客户端看到时)也使它们看起来不同。
我担心的是,有些人(或自动“删除重复项”应用程序)可能会尝试删除一个“副本”,认为还有另一个具有相同内容的文件,但删除一个文件会删除两个都副本,因为它们实际上是同一个文件。我确实想允许对这些文件的读/写访问,但要减少出错的机会。到目前为止,我能想到的就是告诉 smb.conf 不允许任何符号链接,但也许我想要的是让符号链接看起来像 Windows 客户端的快捷方式(我认为这是不可能的)。大多数人在“最新”目录等明显的情况下都会小心谨慎,但当共享区域中有很多链接时(并且用户正确地定期尝试清除无用的文件),需要减少犯愚蠢错误的机会。有什么想法吗?
答案1
不幸的是,我认为这是不可能的。Windows LNK 文件是包含真实目标路径的小型二进制文件,而 Linux 的符号链接在较低 (libc) 级别运行。这意味着 Samba 应该动态地将 Linux 符号链接“翻译”为 LNK 文件;虽然理论上可以使用 VFS 模块来实现,但这样的模块并不存在(据我所知)。
follow symlinks = no
您能做的最好的事情就是使用共享定义中的来拒绝对符号链接的访问。