我必须从启动时开始在 SLES 12 系统上使用 Kerberos 自动挂载 Samba 共享。问题是,在尝试自动挂载共享时不会自动请求 Kerberos 票证,因此我不得不使用 systemd-mounts 来解决问题。
但让我更好地解释一下我的情况:
首先,手动请求 Kerberos 票证并挂载共享完全没问题:
$ kinit [email protected]
$ sudo mount -vt cifs "//fileserver.example.com" -o username=service-user,cruid=linuxuser,sec=krb5,uid=1337,gid=1337 /mnt/
然后我创建了一个自定义 keytab 文件,因为我不想在每次请求 Kerberos 票证时都输入用户的密码:
$ ktutil
ktutil: addent -password -p [email protected] -k 1 -e rc4-hmac
ktutil: wkt custom.keytab
ktutil: exit
当我现在使用 keytab 请求票证时,它也能正常工作,而且我不必输入密码:
$ kinit [email protected] -k -t /home/linuxuser/kerberos/custom.keytab
这一切都很顺利,但我的问题如下:重启后,Kerberos 票证显然消失了。所以我必须在每次重启时请求一张票。我已经设置了一个 cron 作业来处理这个问题,但这不是最复杂的方法。它似乎“杂乱无章”且不干净。
现在回答我的问题:每次执行 mount 命令时,是否有办法自动请求 Kerberos 票证?我在互联网上搜索了一下,发现实用cifs.upcall
程序应该可以解决这个问题。它基本上请求一个密钥来从用户空间挂载共享。我读到您必须配置/etc/request-key.conf
,以便它包含如下一行:
create cifs.spnego * * /usr/sbin/cifs.upcall %k
现在我已经修改了该条目,以便 cifs.upcall 使用我的自定义 keytab 文件。
create cifs.spnego * * /usr/sbin/cifs.upcall -K /home/linuxuser/kerberos/custom.keytab -t %k
遗憾的是,Kerberos 票证仍然没有被请求,并且挂载不起作用。
基本上来说:
如何在每次启动时自动使用 Kerberos 安装 Windows 共享,而无需使用 cron 作业来请求 Kerberos 票证?使用cifs.upcall
正确的方法执行此操作吗?如果正确,为什么在我这边不起作用?