安装基础必要包

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Ubuntu
sudo apt install realmd sssd-ldap ldap-utils libpam-mkhomedir

# CentOS
yum install realmd sssd nss-pam-ldapd openldap-clients -y 
authconfig --enableldap \
--enableldapauth \
--ldapserver=192.168.0.62 \
--ldapbasedn="dc=xueshandai,dc=com" \
--enablemkhomedir \
--update

# 加入域 如果是Windows AD再需要这一步,OpenLDAP不需要
realm join -v xueshandai.com -U administrator 

修改/etc/nsswitch.conf确保有sss

ubuntu发行版较早的版本中,可能会出现安装上面的失败,但实际上是包安装好了,只是没入写入默认的配置

1
2
passwd:         compat sss systemd
group:          compat sss ssystemd

避坑

此时需要重启sssd服务时,会提示启动不起来。那时因为加入域之后,它原来的文件有问题。所以需要手动删除。

1
2
cd /etc/sssd/conf.d/
mkdir bak && mv * bak

如果发现没有/etc/sssd/sssd.conf,则创建一个sssd.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[sssd]
domains = example.com
services = nss, pam
config_file_version = 2
certificate_verification = no_ocsp

[nss]
filter_groups = root
filter_users = root

[pam]

[domain/example.com]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://ldap.example.com:389
ldap_search_base = dc=example,dc=com
cache_credentials = true
ldap_tls_reqcert = never
# 限制LDAP中的uidNumber数值范围,注意与LDAP中的条目的范围一致。
min_id = 1000
max_id = 20000
enumerate = False

有一个天坑,很多文章都没有提到,也许是sssd版本问题。默认当使用LDAP中的用户登陆时,sssd是会强制使用TLS的。这样LDAP中没有配置TLS,则当登陆LDAP中的用户登陆时,sssd会报错,没有办法登陆。以上配置已填这个天坑。

改文件权限并重启sssd

1
chmod 600 /etc/sssd/sssd.conf && systemctl restart sssd

登陆后自动创建用户目录

只需要Ubuntu执行,CentOS已使用authconfig执行

1
2
# Ubuntu
pam-auth-update --enable mkhomedir

如果失败,在/etc/pam.d/sshd最上面增加

1
session required pam_mkhomedir.so skel=/etc/skel umask=0077

验证

1
2
id username
ssh username@127.0.0.1

另外,LDAP Admin这款软件不错。Windows下可以修改条目,导出/导入方便。你值得拥有!