使用 Kerberos 票证在 Ubuntu 18.04 上自动挂载 Windows 共享

使用 Kerberos 票证在 Ubuntu 18.04 上自动挂载 Windows 共享

我已经为此苦苦挣扎了几天。我正尝试将 Ubuntu 18.04 工作站集成到主要为 Windows 的网络中。身份验证由运行 Windows Server 2012 的服务器上的 Active Directory 完成。我设法加入了域,没有太多问题。我要做的另一件事是自动为 Linux 用户安装 Windows 共享。我通过将以下行添加到 /etc/auto.master 来使其正常工作:

/mnt/cifs /etc/auto.cifs --timeout=60 --ghost

/etc/auto.cifs 中有如下内容:

NameOfTheShare -fstype=cifs,uid=$UID,gid=100,username=&,credentials=$HOME/.smbcredentials ://ServerName/NameOfTheShare

现在,我不太喜欢将用户密码以纯文本形式保存在文件中。另外,我在某处读到,可以使用 Kerberos 票证挂载 CIFS 共享。因此,我尝试将其放在 auto.cifs 中:

NameOfTheShare -fstype=cifs,sec=krb5,username=&,domain=mydomain.local,multiuser,cruid=${UID} ://ServerName/NameOfTheShare

(此文件在 CentOS 7 上可以正常运行)。

由于它不起作用,我决定寻找自动挂载错误的踪迹。显然,实现此目的的唯一方法是停止 autofs 服务并在前台运行自动挂载,并启用详细选项:

$ sudo service autofs stop
$ sudo automount -f -v

现在,当我cd进入/mnt/cifs/NameOfTheShare时,共享已按预期安装(所以我无法调试任何东西!)

如果我终止自动挂载,手动卸载共享并重新启动 autofs.service,则最初的问题又会出现:/mnt/cifs/NameOfTheShare无法挂载。

运行 autofs 服务和手动启动 automount 之间有什么区别,可以解释为什么第一种方法失败而第二种方法成功?

补充问题:autofs 服务的错​​误日志是否存在?我找不到。甚至 journalctl 也没有提供任何有价值的信息。

编辑:

以下是输出klist

Ticket cache: FILE:/tmp/krb5cc_1072801131_l33ZzG
Default principal: [email protected]

Valid starting       Expires              Service principal
31/08/2018 15:11:10  01/09/2018 01:11:10  krbtgt/[email protected]
        renew until 01/09/2018 15:11:10

编辑2:

我设法找到了有关自动挂载错误的更多信息。 Syslog 显示以下消息:

No credentials cache found (filename: /tmp/krb5cc_1072801131_igAxKm)

但是,klist现在给我的是:

Ticket cache: FILE:/tmp/krb5cc_1072801131_zgYtQf

看起来 automount 正在查找错误的凭据缓存文件名。问题是,我不知道如何修复它。

答案1

这是另一个解决方案。将类似这样的内容放入 krb5.conf 中,它就可以与 pam_krb5 一起工作。

[appdefaults]
forwardable = true  
pam = {  
    minimum_uid = 1000  
    ccache=FILE:/tmp/krb5cc_%u  
    YOUR.REALM = {  
        ignore_k5login = true  
    }  
}

答案2

您使用 libpam-krb5 吗?如果是,请将 krb5cc_1072801131_zgYtQf 重命名为 krbcc5cc_1072801131 并再次检查。看起来 cifs.upcall 需要类似 FILE:/tmp/krb5cc_(UID) 的内容。删除 libpam-krb5 即可。

相关内容