如何配置 Samba 以使 Windows 10 不会抱怨来宾登录不安全?

sjy*_*sjy 7 samba

我刚刚设置了一个新的 Ubuntu 18.10 服务器,其中包含一个我想从 Windows 访问的 SMB 共享。但是每当我尝试打开路径\\servername\\servername\sharename在 Windows 中时,我都会收到此错误消息:

您无法访问此共享文件夹,因为您组织的安全策略阻止未经身份验证的来宾访问。这些策略有助于保护您的 PC 免受网络上不安全或恶意设备的侵害。

Microsoft在 Windows 10、Windows Server 2016 版本 1709 和 Windows Server 2019 中默认禁用 SMB2中的访客访问时记录了这一点。如果我按照文档中的建议使用“启用不安全的访客登录”组策略选项,则一切正常。我可以在\\servername不输入任何凭据的情况下浏览,如果我尝试访问\\servername\sharename,我会被要求输入用户名和密码。我的 Samba 凭据按预期工作。

但我不想启用任何不安全的东西!我已经尝试禁用访客可访问的所有默认共享,并且我很高兴放弃能够浏览的能力\\servername(尽管拥有它会很好)。我不需要支持任何旧客户;我只想使用用户名和密码从一台 Windows 10 机器访问共享。

他指出,该错误信息是指SMB2,我尝试添加该行server min protocol = SMB3/etc/samba/smb.conf[global]部分,但这并没有改变任何东西。

如何配置 Samba 以便 Windows 10 提示用户输入凭据,而不是尝试使用不安全的访客登录?

Sea*_* P. 7

经过数小时的搜索和诅咒,我有了答案,至少对于域/Active Directory 环境是这样。

关键是删除/注释掉map to guest您的任何行smb.conf(或将其设置为默认值never。)这将禁用未经身份验证的用户访问,这将使较新的 Windows 满意。

但是,如果您将软件安装文件托管在那里以通过 GPO 进行部署,则会产生计算机帐户无法访问共享的问题。要解决这个问题,您需要为计算机帐户(“COMPUTER$”)添加一个 linux 帐户,并且需要设置某种身份映射(idmap)以确保计算机帐户 Ke​​rberos 主体(“DOMAIN\COMPUTER$”)是与这个新的 COMPUTER$ linux 帐户的 UID 匹配。

然后当然共享本身需要授予计算机帐户的权限。世界可读应该就足够了,但我最终将 Samba 设置为使用 Windows ACL 进行共享,如Samba wiki 上所述(非常好!)

但是,如果您的 Samba 机器没有完全/正确地集成到域中,那说起来容易做起来难。就我而言,由于我的 Samba 配置最初是在 3.x 日设置的,因此需要进行大修。我最终保存了现有的 smb.conf,从域中删除了机器,清除了所有 Samba 配置文件/包,重新安装了包(在 Debian 上,我需要sambasamba-vfs-moduleslibnss-winbind)根据这个 Samba wiki重新配置为域成员页面(我使用了Idmap ad FWIW),然后按照上面的Windows ACL 文章中的描述在 Samba 框上设置共享目标目录的所有权在我可以在计算机管理中设置 NTFS 和共享权限之前。(确保您将用于管理共享中文件权限的域用户是文件的所有者或在 UNIX 级别执行此操作的组的成员。)

毕竟,在 Windows 机器上使用psexec.exe -i -s -d cmd.exe然后发出的测试net use \\server\share /user:%COMPUTERNAME%$不再导致可怕的错误消息,而是非常受欢迎的The command completed successfully.,果然,我的 GPO 软件安装部署成功。:)