Ldap

FreeBSD 中的 OpenLDAP 客戶端配置令人頭疼

  • June 7, 2011

我使用 FreeBSD 7.2 作為 NFS 伺服器,並作為 OpenLDAP 伺服器(執行 Debian etch)的客戶端。當使用者訪問他們在 NFS 伺服器上的文件時,使用者的 UID 會在 ldap 伺服器中查找並映射到他們的使用者名(通過 nsswitch)。我的問題是,即使將 FreeBSD 配置為 ldap 伺服器的客戶端,它也無法進行身份驗證。

我知道配置是正確的,因為輸入“ldapsearch”會給我一個 ldap 伺服器上所有使用者的列表。我使用http://www.freebsd.org/doc/en/articles/ldap-auth/client.html上的文件進行配置。這些文件中是否缺少任何內容?

這是 PAM/NSS 使用的 ldap.conf:

[root@csastorage /csastore]# cat /usr/local/etc/ldap.conf
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example,dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

BASE    dc=cl,dc=csa,dc=iisc,dc=ernet,dc=in
URI     ldaps://<server address>/

TLS_REQCERT     allow
TLS_CACERT      /usr/local/etc/openldap/server.pem


#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

pam_login_attribute uid

要在 FreeBSD 下獲得真正好的 OpenLDAP 支持,您需要:

  • nss_ldap
  • pam_ldap - PAM ldap 模組
  • pam_mkhomedir - 首次登錄後從 skel 自動創建使用者的 homedir
  • sudo - 支持 LDAP
  • openssh-portable - 帶有 LPK 更新檔(用於 LDAP 中的使用者 ssh 密鑰)

添加以下內容/etc/pam.d/sshd

auth    sufficient /usr/local/lib/pam_ldap.so no_warn try_first_pass
account required   /usr/local/lib/pam_ldap.so ignore_authinfo_unavail ignore_unknown_user
session required   /usr/local/lib/pam_mkhomedir.so debug mode=0755 skel=/usr/local/share/skel

/etc/pam.d/system添加_

auth            sufficient      /usr/local/lib/pam_ldap.so      no_warn try_first_pass
account         required        /usr/local/lib/pam_ldap.so      ignore_authinfo_unavail ignore_unknown_user
session         required        /usr/local/lib/pam_mkhomedir.so  debug umask=0077 skel=/usr/local/share/skel
password        sufficient      /usr/local/lib/pam_ldap.so      use_authok

通過以下方式替換組 passwd 和 sudoers /etc/nsswitch.conf

group: files cache ldap
passwd: files cache ldap
sudoers: files cache ldap

你還需要修改

  • /usr/local/etc/nss_ldap.conf
  • /usr/local/etc/ldap.conf
  • /usr/local/etc/ssh/sshd_config(用於 LDAP 密鑰支持)
  • /etc/nscd.conf(用於記憶體)

引用自:https://serverfault.com/questions/75462