我最近问了一个问题这里介绍了如何让 Ubuntu 通过 LDAP 针对 OS X 服务器进行身份验证。好消息是,我让它工作了,客户端现在正在进行身份验证,但现在的问题是 pam_mkhomdir.so 似乎没有发挥作用。这是我的通用会话文件:
会话足够的pam_ldap.so 会话[默认=1] pam_permit.so 会话必需 pam_deny.so 会话需要 pam_permit.so 会话需要 pam_unix.so 会话需要 pam_mkhomedir.so skel=/etc/skel/ 会话可选 pam_ldap.so 会话可选 pam_ck_connector.so nox11 会话可选 pam_foreground.so
因此,每次 LDAP 用户尝试登录时,gdm 都会告诉他们其主目录已设置为/Network/[Servername]/User/[username]
。 根据此错误,我猜测 pam_mkhomedir.so 被 LDAP 提供的主路径覆盖,所以我的问题是:有没有办法让 LDAP 用户的主目录在他们登录时在本地创建,而不是尝试使用/Volumes/[Servername]/...
?
提前致谢
更新:Kamil 的回复似乎取得了一些进展,但 gdm 并没有报告主目录设置为/Network/etc...
,而是说它设置为''
(null)。我尝试使用
nss_map_attribute homeDirectory "/home/$username"
但这给了我同样的错误。有什么想法吗?
答案1
我们解决这个问题的方法是向 LDAP 添加另一个属性,类似于linuxHomeDirectory
。然后您可以在中创建映射ldap.conf
:
nss_map_attribute homeDirectory linuxHomeDirectory
对于每个用户,您可以将 LDAP 中的属性设置为其 Linux 主目录的路径,例如/home/$username
或诸如此类。
如果您的主目录由 OS X 服务器提供,那么您可以在/Volumes/$servername/$path
Linux 的层次结构中使用自动挂载程序挂载这些目录,这样您就不需要进行任何 LDAP 属性修改。
更多信息: 以下是一篇有关如何在 OpenDirectory 中扩展 LDAP 模式的文章:http://www.afp548.com/article.php?story=20060228230005854
要填充用户属性,您可以使用ldapadd
和ldapmodify
工具。