Ubuntu + 最新的 samba 版本,符号链接不再适用于在 Windows 中安装的共享

Ubuntu + 最新的 samba 版本,符号链接不再适用于在 Windows 中安装的共享

我刚刚通过 apt-get(apt-got?)获取了适用于我的 Ubuntu 9.10 Linux 系统的最新软件,并且我注意到 samba 包含在更新中。

安装后,我的主目录中的符号链接在作为驱动器安装在我的 Linux 机器上时不再起作用。它们在我进行更新前几秒钟就起作用了。我所有的正常目录都正常工作。在命令行上查看目录列表,所有文件、目录和链接都具有完全相同的权限,但我收到以下错误:

Location is not available
L:\LinkDir is not accessible.
Access is denied.

我查看了论坛,发现 smb.conf 中有这个选项

follow symlinks = yes
wide symlinks = yes
unix extensions = no

我把这些放进去了,但没有效果。有人遇到过这个问题吗?

答案1

Samba 最近出现了一个安全问题(2010 年 2 月 5 日),这是一个据称利用了不安全默认配置的零日漏洞。根据Ubuntu 论坛帖子关于这个话题,“广泛链接”选项现在默认为

显然,自从那些先前的指示你发现了。

将其添加到全球的您的部分smb配置文件文件应该可以修复该问题:

follow symlinks = yes
wide links = yes
unix extensions = no

保存后smb配置文件,请确保重新启动 Samba:

sudo /etc/init.d/samba restart

答案2

这也对我有帮助,尽管我没想到会这样。我在 Ubuntu 上有两个 Samba 共享。在这两个共享中我都使用了符号链接,但在一个目录(共享)中符号链接可以正常工作,而在另一个目录(也是共享)中则不能。

我在 Linux 上跟踪链接没有遇到任何问题,但在 Win 上却不行。

我甚至可以使用两个彼此相邻的 puTTy 窗口,一个在我的 /data 目录中,一个在我的 /data2 目录中,并发出相同的命令:ln -s /data3/Mydata。

Mydata 目录会出现在 Win 框中的两个映射驱动器中,但在一种情况下它可以正常工作,但在另一种情况下我会收到“拒绝访问”错误。

“unix extensions = no”起了作用,但我不知道为什么......

答案3

我遇到过同样的问题,但对我来说,将“unix extensions = no”放入 smb.conf 的 [global] 部分确实解决了这个问题。重要的是,您要将其放入 unix extension 标志的全局部分(对所有共享有效),因为在 Samba 知道用户连接到哪个共享之前会对其进行解析。宽链接选项可以进入适用的共享。

对于那些受到这种行为困扰并希望避免将来发生类似事件的人,我只想说:Samba 团队不会阅读发行版的错误跟踪器,但他们有自己的列表:

[电子邮件保护]

Samba 团队一直认为只有极少数人会受到此漏洞的影响,只有更多人发声,他们才会改变想法。所以如果你关心,请留言给[电子邮件保护]

谢谢,

阿兰

答案4

注意:已经发布了此答案另一个问题,但当仅发布链接时,我的(非常简短!)回复已转换为对这个初始问题的评论(见上文),并且变得有点不可见。因此,为了可见性,这里再次给出完整的答案:

要允许 Samba 客户端跟随共享路径之外的符号链接,Samba 配置中只需要执行以下操作:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(当然,除了 Samba 共享定义本身之外)。从理论上讲,这对于 *nix 客户端来说已经足够了。

注意:“跟随符号链接”指令不是必需的,因为它默认为“是”

对于 Windows 客户端,仍缺少 1 个设置来让它们跟踪此类链接。要做到这一点:

  1. 打开具有管理员权限的 Windows shell
  2. 跑步 :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. 重新启动以重新加载设置

注意:通过编辑 Windows 注册表可以获得相同的结果。请参阅下面的链接

来源:

相关内容