Samba 共享 - 遵循符号链接但已在本地路径中

Samba 共享 - 遵循符号链接但已在本地路径中

我刚刚遇到了一个我在任何地方都找不到的问题(例如 samba 文档)。

我在 server1 上有一个 samba 共享,并且该共享安装到了 server2 上。 server1 的共享是到 的符号链接/var/container/db

问题是,当我尝试从 server2 打开此符号链接文件夹时,它会显示 server2 上的本地文件,因为该路径/var/container/db存在于我的 server2 上。

什么会导致这个问题,解决方案是什么?

两台服务器都运行在 Debian 上。

答案1

如果您在类 Unix 主机之间共享符号链接,则安装共享的系统将根据其自己的文件系统树解释符号链接。这就是 Unix 风格的符号链接的工作原理。

如果服务器 1 上的共享包含您希望符号链接指向的内容,则可以使用相对的符号链接而不是绝对链接。

例如,如果您在 server1 上的 samba 共享是,/var并且它作为 挂载在 server2 上/server1var,并且符号链接位于 server1 上/var/some/directory/link-to-db,则您当前的符号链接将如下所示:

server1# ln -s /var/container/db /var/some/directory/link-to-db

相反,你可以这样做:

server1# cd /var/some/directory
server1# ln -s ../../container/db link-to-db

如果 server1 上的数据库不在 Samba 共享内,那么您将需要 Samba 服务器参数wide links = yes。这将使 server1 遵循符号链接并提供对 server1 的访问,/var/container/db而不仅仅是传递符号

但是,如果服务器在默认设置下运行,它也会unix extensions = yes默认启用 -wide links如果客户端是类 Unix 系统(如您的情况),这将禁用。

但是,通过设置,即使在共享连接上有效,allow insecure wide links = yes您也可以允许该wide links参数起作用-unix extensions但不建议这样做,因为它不安全。server1 上的管理员将失去对共享内容和不可共享内容的控制,因为客户端可以尝试通过在共享上创建合适的符号链接(如果可写)来访问 Samba 共享之外的任何文件 - 然后它就只是连接上使用的用户帐户是否有权读取该文件。

基本上,allow insecure wide links+ wide links+ unix extensions+ 客户端可写共享实际上等同于仅/与 Samba 共享。不建议。

相关内容