我们的主目录是通过 Kerberized NFS 导出的,因此用户需要有效的 Kerberos 票证才能挂载其主目录。此设置适用于我们现有的客户端和服务器。
现在我们要添加一些 11.10 客户端,从而设置 ldap 和 kerberos 以及 pam_mount。ldap 身份验证可以正常工作,用户可以通过 ssh 登录,但是无法挂载他们的主目录。
当 pam_mount 配置为以 root 身份挂载时,gssd 找不到有效的 kerberos 票证,挂载失败。
Nov 22 17:34:26 zelda rpc.gssd[929]: handle_gssd_upcall: 'mech=krb5 uid=0 enctypes=18,17,16,23,3,1,2 '
Nov 22 17:34:26 zelda rpc.gssd[929]: handling krb5 upcall (/var/lib/nfs/rpc_pipefs/nfs/clnt2)
Nov 22 17:34:26 zelda rpc.gssd[929]: process_krb5_upcall: service is '<null>'
Nov 22 17:34:26 zelda rpc.gssd[929]: getting credentials for client with uid 0 for server purple.physcip.uni-stuttgart.de
Nov 22 17:34:26 zelda rpc.gssd[929]: CC file '/tmp/krb5cc_65678_Ku2226' being considered, with preferred realm 'PURPLE.PHYSCIP.UNI-STUTTGART.DE'
Nov 22 17:34:26 zelda rpc.gssd[929]: CC file '/tmp/krb5cc_65678_Ku2226' owned by 65678, not 0
Nov 22 17:34:26 zelda rpc.gssd[929]: WARNING: Failed to create krb5 context for user with uid 0 for server purple.physcip.uni-stuttgart.de
Nov 22 17:34:26 zelda rpc.gssd[929]: doing error downfall
另一方面,当 pam_mount 配置了 noroot=1 选项时,它根本无法挂载该卷。
Nov 22 17:33:58 zelda sshd[2226]: pam_krb5(sshd:auth): user phy65678 authenticated as [email protected]
Nov 22 17:33:58 zelda sshd[2226]: Accepted password for phy65678 from 129.69.74.20 port 51875 ssh2
Nov 22 17:33:58 zelda sshd[2226]: pam_unix(sshd:session): session opened for user phy65678 by (uid=0)
Nov 22 17:33:58 zelda sshd[2226]: pam_mount(mount.c:69): Messages from underlying mount program:
Nov 22 17:33:58 zelda sshd[2226]: pam_mount(mount.c:73): mount: only root can do that
Nov 22 17:33:58 zelda sshd[2226]: pam_mount(pam_mount.c:521): mount of /Volumes/home/phy65678 failed
那么我们如何允许特定组的用户执行 nfs 挂载?如果这不起作用,我们可以让 pam_mount 使用 root 但传递正确的 uid 吗?
答案1
请参阅此主题:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=190267
如果 fstab 中没有“用户”选项,则只有 root 可以挂载卷。mount.c 中有一些关于使 mount 命令可由任何用户执行的评论,但维护者拒绝了这一评论(评论提到了一些有关安全隐患的内容,但没有更具体)。
与原始上游相比,Debian 版本的 libpam-mount 使用以下方式执行挂载命令:用户uid,而不是 root。以 root 身份执行用户指定的挂载是一个安全漏洞。然后任何用户都可以在登录时将卷挂载到 /usr 或 /tmp,或者在注销时卸载任何其他卷。
或者换句话说,libpam-mount 只能做用户可以做的事情,仅此而已。
那么,有什么建议吗?
在 fstab 中放入用户条目应该可以。请告诉我这是如何工作的。请注意,其他文件系统(ncp、smb)具有用户可调用的挂载二进制文件,如 smbmount 或 ncpmount。对于回送挂载,似乎没有类似的东西 :/