Ubuntu 22.04 - OpenLDAP安装使用(服务器+LAM+客户端)
csdn你…怎么不自动保存了很崩溃啊啊啊啊,我记得发现没保存之后我又改了一遍然后保存了,怎么现在又没了啊啊啊啊,过了这么久我都不记得了啊啊啊啊啊
参考
在 Ubuntu 22.04|20.04|18.04 上安装 OpenLDAP 和 phpLDAPadmin
在 Ubuntu 22.04|20.04|18.04|16.04 上配置 LDAP 客户端
如何在 Ubuntu 22.04 上安装 OpenLDAP(转载)
服务器
安装前
设置您的系统主机名并将其添加到文件/etc/hosts。
sudo vim /etc/hosts
将 ldap.example.com 替换为您正确的主机名/有效域名。
192.168.18.50 ldap.example.com
安装
sudo apt-get update
sudo apt-get install slapd ldap-utils
密码:OpenLDAP
配置slapd
sudo dpkg-reconfigure slapd
# Omit OpenLDAP server configuration? NO
# DNS domain name: mint.com
# Organization name: ldap0
# Administrator password: 123456
# Confirm password: 123456
# Do you want the database to be removed when slapd is purged? YES
# Move old database? YES
slapcat
输出 SLAPD 数据库内容来确认安装是否成功。
编辑配置文件 /etc/ldap/ldap.conf,取消注释行 \BASE\ 和 \URI\ 并输入您的 OpenLDAP 服务器的域名。
sudo vim /etc/ldap/ldap.conf
重新启动 slapd服务来应用更改
sudo systemctl restart slapd
sudo systemctl status slapd
针对这个问题,参考:LDAP connection seems to keep failing
方法一:将/etc/ldap/ldap.conf 中的ldapi://
改为ldap://
原理:在 Ubuntu 系统中,LDAP 客户端配置通常位于 /etc/ldap/ldap.conf 文件中。ldapi:// 是用于本地 Unix 套接字的 LDAP URI,而 ldap:// 是用于 TCP/IP 网络连接的 LDAP URI。
对我没用,我本来就是ldap://
方法二:安装libnss-ldapd
sudo apt-get update
sudo apt install libnss-ldapd
原理:removes libnss-ldap and installs nscd and nslcd
然后再sudo systemctl status slapd,似乎成功了
服务端主机验证
ldapsearch是一个用于搜索和查询LDAP目录的工具。以下是一个使用ldapsearch进行查询验证的示例:
# ldapsearch -x -H ldap://服务器地址|hosts主机名|域名 -D "cn=管理员,dc=域名,dc=顶级域" -w 密码 -b "dc=域名,dc=顶级域" "(objectClass=\*)"
ldapsearch -H ldap://127.0.0.1 -x -D 'cn=admin,dc=mint,dc=com' -w '123456' -b 'dc=mint,dc=com' '(objectClass=*)'
或
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:///
这里因为我之前搞过加组加用户什么的(但是记录全丢了),所以还有别的信息
开启日志
配置文件:/etc/ldap/slapd.d
如果你搜索OpenLDAP的安装指南,很不幸地告诉你,网上不管中文的英文的,90%都是错的,它们都还活在上个世纪,它们会告诉你要去修改一个叫做slapd.conf的文件,基本上看到这里,你就不用往下看了,这个文件早就被抛弃,新版的OpenLDAP里根本就没有这个文件!取而代之的是slapd.d的文件夹
( 我花了一个五一终于搞懂了OpenLDAP)
slapd.d的相关内容太少了…
通过修改cn=config的LDIF文件来设置日志级别。设置日志级别为256(这个日志级别看到了很多不同版本的数字,不知道有什么区别,先这样用着):
配置日志文件的存储位置。创建或编辑/etc/rsyslog.d/10-slapd.conf
文件,添加:
$template slapdtmpl,"[%$DAY%-%$MONTH%-%$YEAR% %timegenerated:12:19:date-rfc3339%] %app-name% %syslogseverity-text% %msg%\n"
local4.* /var/log/slapd.log;slapdtmpl
将OpenLDAP的日志存储到/var/log/slapd.log文件中
完成后重启rsyslog服务和slapd服务
sudo service rsyslog restart
sudo systemctl restart slapd
查看日志文件
可以使用cat命令:
sudo cat /var/log/slapd.log
或者使用tail命令实时查看日志:
sudo tail -f /var/log/slapd.log
我使用了tail,另外开了个终端进行ldapsearch,可以看到search后日志有增加内容
操作
之前做了但是丢失的:
添加用户和组的基本 DN
创建一个名为 basedn.ldif 的文件(我在/mint/ldap目录下创建),其中包含以下内容:
dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: peopledn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups
通过运行命令添加文件:
sudo ldapadd -x -D cn=admin,dc=mint,dc=com -W -f basedn.ldif
账户管理器
安装
sudo apt install ldap-account-manager
安装完成后,打开浏览器,访问服务器IP地址后跟URL路径/lam(即http://192.168.5.25/lam)。你应该得到LDAP 帐户管理员 (LAM) 的登录页面。
配置
通用设置
点击右上角lam配置
点编辑服务器配置文件
输入密码lam,点击确定
工具设置里设置主DN,登录方法选择固定列表(fixed list),设置admin用户,然后点击保存
账户类型
再次进入lam配置-编辑服务器配置文件,到“帐户类型”页面以设置 OpenLDAP 服务器的默认组。
在“用户”部分,将 LDAP 后缀输入为 ou=People,dc=localdomain,dc=com 。 在这个例子中,所有用户都应该在 People 上可用。
在“组”部分,输入 LDAP 后缀为 ou=Groups,dc=localdomain,dc=com 。在此示例中,所有组都应在基本组 Groups 中可用。
保存后回到登录页,用户变成了admin,输入密码123456登录
客户端
本来看很多人用phpLDAPadmin,安装之后出现无法使用的问题,查资料发现是php版本问题,绕不开
出自在 Ubuntu 22.04|20.04|18.04 上安装 OpenLDAP 和 phpLDAPadmin(不是有问题就别教我安装啊!)
所以决定听从建议安装LDAP客户管理器了,安装phpLDAPadmin的过程本来有记录的既然丢了就算了
安装
将 LDAP 服务器地址添加到 /etc/hosts 文件中。
sudo vim /etc/hosts
192.168.18.50 ldap.example.com
前面是服务器ip,后面域名
安装命令:
sudo apt -y install libnss-ldap libpam-ldap ldap-utils
设置 LDAP URI - 可以是 IP 地址或主机名
设置搜索库的专有名称
选择 LDAP 版本 3
为设为本地根数据库管理员选择是
LDAP 数据库是否需要登录?回答否
为 root 设置 LDAP 帐户,例如 cn=admin,cd=example,cn=com
设置 LDAP root 帐户密码:123456
配置
安装后,编辑 /etc/nsswitch.conf 并将 ldap 身份验证添加到 passwd 和 group 行。
sudo vim /etc/nsswitch.conf
修改文件/etc/pam.d/common-password。删除第 26 行的 use_authtok
在 Ubuntu 系统中,/etc/pam.d/common-password 文件是 PAM(Pluggable Authentication Modules)配置文件之一,用于定义密码认证的相关策略。use_authtok 是 PAM 模块中的一个选项,用于指定是否使用前一个模块提供的认证令牌(通常是密码)。
通过将以下行添加到文件 /etc/pam.d/common-session 的末尾,可以在首次登录时创建主目录
session optional pam_mkhomedir.so skel=/etc/skel umask=077
通过切换到 LDAP 上的用户帐户进行测试
sudo su - mouse
su: user mouse does not exist or the user entry does not contain all the required fields
提示用户不存在,使用命令看看用户在不在:
ldapsearch -x -H ldap://ldap.mint.com -D "cn=admin,dc=mint,dc=com" -W -b "dc=mint,dc=com" "(uid=mouse)"
在的啊
getent passwd mouse
没有返回结果说明系统无法解析该用户,试了一些常见方法还没弄好,先这样吧
终于搞完了,快照保存一下