我经常在 Linux 机器(OpenSUSE Tumbleweed)上安装 Windows 2012R2 服务器的共享驱动器。自上周四在 Windows 服务器上安装更新以来,安装失败并显示错误消息
Aug 26 11:45:27 <linux server> kernel: CIFS: Attempting to mount //<windows server>/<share>
Aug 26 11:45:27 <linux server> kernel: CIFS: Status code returned 0xc000018d STATUS_TRUSTED_RELATIONSHIP_FAILURE
Aug 26 11:45:27 <linux server> kernel: CIFS: VFS: \\a-store Send error in SessSetup = -5
Aug 26 11:45:27 <linux server> kernel: CIFS: VFS: cifs_mount failed w/return code = -2
我尝试了不同的挂载选项(vers=2.0、2.1、3.0、sec=ntlm、ntlmssp)和不同的用户 - 全部都得到相同的结果。Linux 服务器可以挂载来自其他服务器的共享,并且 Windows 服务器上的共享可以从(几乎所有)其他计算机访问。我尝试在两台计算机上退出域并再次加入 - 但没有效果。
目前,我认为 Windows 服务器上的某个更新是导致该问题的原因。我们还有其他运行 2012R2 的服务器,它们仍然运行良好,并且周四也进行了更新。唯一的区别是操作系统的语言(德语/英语)。
有没有办法获取有关该问题的更多信息?“STATUS_TRUSTED_RELATIONSHIP_FAILURE”上的文档不太有帮助。
答案1
看起来像是一个身份验证问题,请尝试以下操作:
- 密切关注 Windows 服务器上的日志文件,以捕获任何相关错误
- 确保您在 Linux 上使用的帐户有权访问此共享,本地帐户与域帐户
- 如果你的防火墙允许,请尝试将 Linux 与 Windows 进行基本 ping
- 从另一台 Linux 机器尝试
- 为什么你说“几乎所有”也许这两者之间存在一些共同点,即阻止你的 Linux 和其他未连接的机器
我希望这有帮助
答案2
问题似乎是我无法使用 Kerberos 身份验证。我从 winbind 更改为 sssd 以加入 Windows 域,并在 mount.cifs 命令中使用 sec=krb5 作为选项:
mount.cifs //server.tld/share /path/to/mount/point -o vers=3.0,sec=krb5
不幸的是,在我改用 sssd 之前这是不可能的。
[编辑 2021-02-21]
我之前使用 winbind,后来改用 sssd 来加入域。我不记得我做了哪些更改,但从 /etc 中的配置来看,我做了以下更改
- 在 /etc/sssd/sssd.conf 中添加了 sssd 配置
kinit
使用并加入域net ads join
无需更改 smb.conf。