确保你的CentOS 7系统已更新到最新状态:
sudo yum update -y
sudo reboot # 如果需要内核更新,建议重启
sudo yum install -y openldap openldap-servers openldap-clients
sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd
slappasswd
输入你想要的密码后,会生成一个SSHA哈希值,记下这个值(后面会用到)。
创建一个名为chrootpw.ldif
的文件:
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}你刚才生成的哈希值
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
创建一个名为chdomain.ldif
的文件(将example.com
替换为你自己的域名,dc=example,dc=com
也要相应修改):
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=example,dc=com" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}你之前生成的哈希值
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=example,dc=com" write by * read
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
basedomain.ldif
文件dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
dc: example
dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
sudo ldapadd -x -D cn=Manager,dc=example,dc=com -W -f basedomain.ldif
系统会提示输入之前设置的密码。
sudo firewall-cmd --add-service=ldap --permanent
sudo firewall-cmd --reload
ldapsearch -x -b dc=example,dc=com -D "cn=Manager,dc=example,dc=com" -W
创建一个testuser.ldif
文件:
dn: uid=testuser,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: Test User
uid: testuser
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/testuser
loginShell: /bin/bash
userPassword: {SSHA}生成的密码哈希
shadowLastChange: 0
shadowMax: -1
shadowWarning: 0
添加用户:
ldapadd -x -D cn=Manager,dc=example,dc=com -W -f testuser.ldif
安装phpLDAPadmin进行Web管理:
sudo yum install -y epel-release
sudo yum install -y phpldapadmin
配置phpLDAPadmin:
编辑/etc/phpldapadmin/config.php
:
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','base',array('dc=example,dc=com'));
$servers->setValue('login','bind_id','cn=Manager,dc=example,dc=com');
$servers->setValue('login','auth_type','session');
然后通过浏览器访问:http://your-server-ip/phpldapadmin
连接被拒绝:
systemctl status slapd
认证失败:
olcRootPW
是否正确设置权限问题:
/var/lib/ldap/
目录及其内容属于ldap用户日志查看:
journalctl -u slapd -f
现在你已经成功在CentOS 7上搭建了OpenLDAP服务!你可以根据需要添加更多用户和组织单元。