如何配置 Samba 以便 Windows 10 不会抱怨不安全的访客登录?

如何配置 Samba 以便 Windows 10 不会抱怨不安全的访客登录?

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

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

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 提示用户输入凭据,而不是尝试使用不安全的访客登录?

答案1

经过几个小时的搜索和咒骂,我找到了答案,至少对于域/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 维基页面(我用了Idmap 广告FWIW),然后按照上述说明在 Samba 框上设置共享目标目录的所有权Windows ACL 文章在我可以在计算机管理中设置 NTFS 和共享权限之前。(请确保用于管理共享中文件权限的域用户是文件的所有者或 UNIX 级别的组成员。)

完成所有这些之后,使用 Windows 机器进行测试,psexec.exe -i -s -d cmd.exe然后发出net use \\server\share /user:%COMPUTERNAME%$不再导致可怕的错误消息,而是令人欢迎的消息The command completed successfully.,果然,我的 GPO 软件安装已成功部署。:)

相关内容