强制 mount.cifs 使用特定的 kerberos 票证

强制 mount.cifs 使用特定的 kerberos 票证

TL;DR 我想强制mount.cifs(或smbclient)使用特定票证(例如cifs/server@DOMAIN2而不是cifs/server@DOMAIN)。

很长的故事

我有两个 smb 服务器(都是 Windows):server-aserver-b。我可以毫无问题地从以下位置挂载共享server-a

$ sudo mount -t cifs //server-a.domain-a/share /mnt/a -o "sec=krb5,cruid=$UID"
# uses cifs/server-a@DOMAIN-A

但是,尝试挂载共享server-b会导致错误(后面重点是我的sudo smbclient...):

$ sudo mount -t cifs //server-b.domain-b/share /mnt/b -o "sec=krb5,cruid=$UID"
mount error(126): Required key not available
$ sudo dmesg|tail
[7267002.391319] CIFS VFS: Send error in SessSetup = -126
[7267002.391504] CIFS VFS: cifs_mount failed w/return code = -126
$ sudo smbclient //server-b.domain-b/share
ads_krb5_mk_req: smb_krb5_get_credentials failed for **cifs/server-b.domain-b@DOMAIN-A** (Server not found in Kerberos database) <- note wrong domain
cli_session_setup_kerberos: spnego_gen_krb5_negTokenInit failed: Server not found in Kerberos database
session setup failed: SUCCESS - 0
$ klist |grep "Default principal"
Default principal: user@DOMAIN-A

我的诊断

mount.cifs 错误地使用了DOMAIN-A(我的主域) 而不是DOMAIN-B。因此,我想强制它使用正确的票证。

  1. 我可以强制 mount.cifs 或 smbclient 使用特定票证吗?如果可以,那么该怎么做?
  2. mount.cifs / smbclient 中的票证选择规则是什么?
  3. 我如何检查哪张票被用于转机?

相关内容