ldap sssd授权linux登录

发布时间 2024-01-12 17:27:39作者: 我也不知道起啥名

业务系统越来越多,服务器也越来越多,本文主要是给企业用户减少账号密码管理难度的。
目的:使用ldap统一管理账号密码,实现单点登录linux。
一点废话,网上找了很多文章,看得云里雾里,搞了几天算是搞明白了一点,记录一下,希望有人能用得上。
小白文,接触过一点linux的都可以尝试一下

环境准备
ldap server 本文用的群晖上的
操作系统debian 12,理论上linux都可以用

开搞前强烈建议对使用的虚拟机进行快照,不要直接在生产服务器上使用。

ldap server搭建过程:略
ldap server 信息如下:

域:my
ip:10.0.0.251
base dn: dc=my
bind dn: uid=root,cn=users,dc=my
密码: abcd1234

以下为debian 12上的操作

安装sssd,如果安装过别的ldap管理工具,请先卸载
ldap-utils测试ldap是否可用的,可装,我这儿装了
以下均为root账号操作没有root账号自己在命令前加sudo

apt update
apt install sssd ldap-utils

测试ldap是否可用,然后输入管理员密码

ldapsearch -x -b "dc=my" -D "uid=root,cn=users,dc=my" -H ldap://10.0.0.251 -W

重点是框出来的这几项,如果没有的话,那就得重新做映射了,标准的应该都有。

测试成功,创建sssd.conf,默认没这文件nano /etc/sssd/sssd.conf 用的系统可以用vi或vim

[sssd]
services = nss, pam
domains = my                                    #域,和下面[domain/my]对应
[nss]
debug_level = 9
#filter_groups = root                           #不知道有啥用,反正我注释掉了
#filter_users = root                            #不知道有啥用,反正我注释掉了
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
[domain/my]                                     #这儿的my对应上面的域,抄作业记得改名字
debug_level = 9
auth_provider = ldap
id_provider = ldap
chpass_provider = ldap
ldap_schema = rfc2307                           #ldap版本,默认就是这个rfc2307其它还有rfc2307bis,IPA,AD
ldap_uri = ldap://10.0.0.251:389                #改了host的话也可以填my,我这儿用的ip
ldap_search_base = dc=my                        #base dn
ldap_default_bind_dn = uid=root,cn=users,dc=my  #dind dn
ldap_default_authtok_type = password            #认证方式,密码认证
ldap_default_authtok = abcd1234                 #ldap的管理员密码
override_homedir = /home/%u                     #重定向用户文件夹为/home/用户名
override_shell= /bin/bash                       #修改默认shell为/bin/bash,群晖默认是/bin/sh,不好用,所以改了

用nano编辑器的按ctrl+x输入y保存并退出,用vi或vim的按i进行编辑,按esc退出编辑模式退直接输入:wq后保存退出
修改sssd.conf的权限,并重启sssd服务

chmod 600 /etc/sssd/sssd.conf      #一般是600,如果报权限错误可以试试改成777再看看
systemctl restart sssd           

查看sssd状态

systemctl status sssd  

正常如下,如果之前有安装过nscd之类的,会报错。

验证用户,abc为ldap上的用户

getent passwd abc


能够查询到用户说明ldap已经连接成功了,如果查不到,那就需要排查一下
查阅日志sssd_域,我这儿是my

tail -f /var/log/sssd/sssd_my.log 

或者直接用

tail -f /var/log/sssd/sssd_*.log 

解决掉各种问题后,尝试ssh登录

pam-auth-update    #配置为第一次登录的用户创建个人目录