![Autofs 在挂载时始终使用 uid 0](https://linux22.com/image/795590/Autofs%20%E5%9C%A8%E6%8C%82%E8%BD%BD%E6%97%B6%E5%A7%8B%E7%BB%88%E4%BD%BF%E7%94%A8%20uid%200.png)
我们这里有一些 Ubuntu 客户端,它们将安装受 kerberos 保护的 NFS 主目录。服务器与现有客户端配合良好,因此我们可以假设 ldap 和 kerberos 都正常。
我们设法在 ubuntu 客户端上配置了 ldap,kinit 能够为 ldap 用户获取票证。当 root 使用 kinit 获取 root 票证时,我们就可以挂载 nfs 共享。
为了允许用户挂载他们的主目录,我们设置了 autofs。但是这不起作用,因为 autofs 似乎以“root”身份执行挂载。但是,root 没有任何票证,因此挂载失败 - 请参阅附件中 rpc.gssd 的日志摘录。请注意,我们的 kerberos 设置不使用机器主体,而是使用用户主体。我们如何让 autofs 将正确的 uid 传递给 gssd?
handling gssd upcall (/var/lib/nfs/rpc_pipefs/nfs/clnt10)
handle_gssd_upcall: 'mech=krb5 uid=0 '
handling krb5 upcall (/var/lib/nfs/rpc_pipefs/nfs/clnt10)
process_krb5_upcall: service is '<null>'
getting credentials for client with uid 0 for server purple.physcip.uni-stuttgart.de
CC file '/tmp/krb5cc_554' being considered, with preferred realm 'PURPLE.PHYSCIP.UNI-STUTTGART.DE'
CC file '/tmp/krb5cc_554' owned by 554, not 0
WARNING: Failed to create krb5 context for user with uid 0 for server purple.physcip.uni-stuttgart.de
Ubuntu 11.10 桌面 Autofs5
kinit 的输出。用户 ID 为 65678。领域和用户名已被更改以尊重隐私。
usr01@ubuntuclnt01:/$ klist
Ticket cache: FILE:/tmp/krb5cc_65678_ed3816
Default principal: usr01@REALM
Valid starting Expires Service principal
11/18/11 17:18:57 11/19/11 03:18:57 krbtgt/REALM
renew until 11/19/11 17:18:57
更新:如果发现一个 2.5 年前的错误报告,其中准确描述了这种现象。 https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/368153#5
看来 (ubuntu) linux 无法与 kerberos 安全主卷兼容通过设计- 几乎任何其他操作系统都可以做到这一点 - 甚至 Mac OSX!