我已经为此苦苦挣扎了几天。我正尝试将 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 即可。