如何将Ubuntu配置为LDAP客户端?

如何将Ubuntu 12.04配置为带有PAM模块的LDAP客户端?

在你的问题中发布你的配置文件会很有帮助! - Jorge Castro
5个回答

这篇帖子的内容是基于这个指南。在12.04版本中应该能正常运行。
  1. 执行以下命令:
    sudo apt-get install ldap-utils libpam-ldap libnss-ldap nslcd
    
    注意:在安装上述软件包时,会弹出一个对话框,询问有关LDAP配置的一些信息。请确保输入正确的LDAP配置值。
  2. 编辑/etc/nsswitch.conf(使用sudo)。将"ldap"追加到以下行中:
    #原始文件如下
    passwd: compat 
    group : compat  
    shadow: compat 
    
    #追加"ldap"后的行如下
    passwd: compat ldap
    group : compat ldap  
    shadow: compat ldap 
    
  3. 注释掉rootbinddn这一行,我不确定为什么我们需要这样做。
  4. 编辑/etc/pam.d/login(使用sudo)并粘贴以下内容:
    session required pam_mkhomedir.so skel=/etc/skel umask=0022 
    
  5. 编辑/etc/pam.d/lightdm(使用sudo)并粘贴以下内容:
    session required pam_mkhomedir.so skel=/etc/skel umask=0022 
    
  6. 执行以下命令:
    sudo update-rc.d nslcd enable
    
重新启动后,您应该能够以LDAP用户身份登录。 如果您不重新启动机器,则必须使用以下命令重新启动nscd:
/etc/init.d/nscd restart

可能的问题和解决方案:
- 以LDAP用户身份登录需要很长时间(几分钟):很可能是nss-ldap在查找用户组时出现了问题。确保用户属于本地认可的组,或者用户属于LDAP中定义的组。如果组在LDAP中定义,请确保它是一个真正的POSIX组。
- 始终检查/var/log/auth.log日志文件。如果看到“无法联系LDAP服务器”,请检查LDAP服务器是否可达并且端口是否开放。
- 尝试通过名称ping LDAP服务器。
- 尝试检查LDAP端口是否开放:
- LDAP可以监听不同的端口,但通常可以在389和636上找到。 - 您可以使用telnet来检查端口是否开放: - telnet 389 或 telnet 636 - 如果在控制台上看到任何字符,则表示该端口已开放,LDAP服务器应该正在运行。 - 如果没有看到任何内容或收到错误消息,则表示LDAP服务器未运行或某些东西(如防火墙)阻止了连接。

如果您正在使用ldaps,您可能还需要根据http://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate的说明配置信任证书。 - sweetfa

为了在登录时自动创建主目录,我必须添加以下行:
session required pam_mkhomedir.so skel=/etc/skel umask=0022

将其放入/etc/pam.d/common-session而不是/etc/pam.d/login - 当我只将其放在后者时,我的个人目录没有被创建。


谢谢你。在尝试设置后,删除libnss-ldap并安装libnss-ldapd解决了我的启动问题。 - Omegamormegil

为了能够输入用户名,您需要使用以下命令修改lightdm配置
/usr/lib/lightdm/lightdm-set-defaults -m true

关于在ligthdm greeter中输入用户名的问题,从16.04版本开始,lightdm-set-defaults命令已经被移除。
相反地,您可以在lightdm配置文件中添加输入用户名的选项。例如,创建文件/etc/lightdm/lightdm.conf并添加以下行:
[SeatDefaults]
greeter-show-manual-login=true