能,但必须启用LDAPS加密、用sssd替代手动NSS/PAM配置、正确设置证书与搜索基DN,并完成家目录创建和sudo权限授权,否则将出现认证失败、登录后无家目录或权限不生效等问题。

新手配置Linux全局LDAP身份认证,核心是让系统“查得到、验得过、登得进”,同时通信必须加密。不建议从零手写slapd.d或硬改PAM顺序——容易卡在某一层却不知哪出错。推荐用sssd + LDAPS组合,它封装了NSS/PAM集成、本地缓存、TLS自动协商,对新手更友好、故障面更小。
第一步:服务端先开LDAPS(加密是底线)
明文LDAP(端口389)在生产环境绝对不可用。哪怕测试,也应强制走加密通道:
- 生成自签名证书(测试用):
openssl req -x509 -newkey rsa:4096 -keyout /etc/openldap/certs/ldap.key -out /etc/openldap/certs/ldap.crt -days 365 -nodes -subj "/CN=ldap.example.com" - 修改slapd配置启用LDAPS:编辑
/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif,确保含olcTLSCertificateFile: /etc/openldap/certs/ldap.crt和olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key - 重启服务:
systemctl restart slapd;验证端口636是否监听:ss -tln | grep :636
第二步:客户端装sssd并配LDAPS连接
不用nslcd+手动PAM改写,sssd一条命令就能拉通整个链路:
- 安装包:
yum install -y sssd sssd-ldap openldap-clients certmonger(RHEL/CentOS)或apt install -y sssd sssd-ldap ldap-utils(Debian/Ubuntu) - 写
/etc/sssd/sssd.conf(关键项):
id_provider = ldap<br> auth_provider = ldap<br> ldap_uri = ldaps://ldap.example.com:636<br> ldap_search_base = dc=example,dc=com<br> ldap_tls_cacert = /etc/openldap/certs/ldap.crt<br> ldap_id_use_start_tls = False
注意:ldap_uri必须以ldaps://开头,ldap_tls_cacert指向服务端证书(不是私钥) - 设权限并启动:
chmod 600 /etc/sssd/sssd.conf && systemctl enable --now sssd
第三步:打通系统级认证(NSS+PAM自动接上)
sssd安装后自带集成脚本,无需手动改/etc/nsswitch.conf或/etc/pam.d/system-auth:
- RHEL 8+/CentOS 8+:
authselect select sssd --force - RHEL 7/CentOS 7:
authconfig --enablesssd --enablesssdauth --update - 验证用户可见:
getent passwd testuser有输出即NSS通;sss_cache -E可清缓存重试
第四步:加固细节不能漏
能登录≠安全。三个常见坑点必须处理:
-
家目录自动创建:在
/etc/sssd/sssd.conf的[domain/example.com]段加ldap_user_home_directory = /home/%u和override_homedir = /home/%u,再加create_homedir = True -
sudo权限显式授权:在
/etc/sudoers里加%domainusers ALL=(ALL) NOPASSWD: ALL(前提是LDAP中该组存在且命名匹配) -
时间同步强制开启:Kerberos或TLS证书校验严重依赖时间,运行
timedatectl set-ntp true并systemctl restart chronyd
不复杂但容易忽略:LDAPS证书若用自签,客户端必须把服务端证书放进信任链;sssd日志默认在/var/log/sssd/,查sssd_example.com.log比翻journalctl更快定位连接或搜索失败原因。


















