網上的教程一大堆,也沒用具體說明版本,所以很多操作方法都不一樣,把我踩過的坑記錄下來
環境:
Centos7
OpenLdap 2.4.44
openldap新版本和老版本的配置方法差別特別大
安裝步驟
1.yum安裝OpenLdap
#yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
2.生成管理密碼
#slappasswd -s Your_P@ssw0rd
{SSHA}J8D5Vzhe1HVmdj3jl83UeT4uO3LPYcUM
3.編輯配置
#cd /etc/openldap/slapd.d/cn\=config
修改olcDatabase={2}hdb.ldif文件如下
#vim olcDatabase\=\{2\}hdb.ldif
olcRootPW: {SSHA}J8D5Vzhe1HVmdj3jl83UeT4uO3LPYcUM,這個密碼就是上面生成的管理密碼,然后修改域名信息:
olcSuffix: dc=domain,dc=com
olcRootDN: cn=root,dc=domain,dc=com
修改olcDatabase={1}monitor.ldif文件,如下:
#vim olcDatabase\=\{1\}monitor.ldif
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=cn=root,dc=domain,dc=com" read by * none
4.測試一下配置
#slaptest -u 如果提示success 說明配置文件沒有問題
5.配置OpenLDAP數據庫
#cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
#chown ldap:ldap -R /var/lib/ldap
#chmod 700 -R /var/lib/ldap
注意:/var/lib/ldap/就是BerkeleyDB數據庫默認存儲的路徑。
導入基本Schema
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
注意:這個根據個人需要,導入自己需要的schema
下面的步驟就是往OpenLdap里面插入用戶,可做可不做,你也可以自己用ldap客戶端插入數據,我先把他放在這
添加用戶及用戶組
默認情況下OpenLDAP是沒有普通用戶的,但是有一個管理員用戶。管理用戶就是前面我們剛剛配置的root。
現在我們把系統中的用戶,添加到OpenLDAP中。為了進行區分,我們現在新加兩個用戶ldapuser1和ldapuser2,和兩個用戶組ldapgroup1和ldapgroup2,如下:
添加用戶組,使用如下命令:
groupadd ldapgroup1
groupadd ldapgroup2
添加用戶並設置密碼,使用如下命令:
useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
把剛剛添加的用戶和用戶組提取出來,這包括該用戶的密碼和其他相關屬性,如下:
grep ":10[0-9][0-9]" /etc/passwd > /root/users
grep ":10[0-9][0-9]" /etc/group > /root/groups
根據上述生成的用戶和用戶組屬性,使用migrate_passwd.pl文件生成要添加用戶和用戶組的ldif,如下:
生成ldif文件之前要先修改vim /usr/share/migrationtools/migrate_common.ph 文件,修改base_dn信息
vim /usr/share/migrationtools/migrate_common.ph
$DEFAULT_BASE = "dc=domain,dc=com";
保存后,執行如下腳本
/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
配置openldap基礎的數據庫,如下:
cat /root/base.ldif
dn: dc=domain,dc=com
o: domain com
dc: domain
objectClass: top
objectClass: dcObject
objectclass: organization
dn: cn=root,dc=domain,dc=com
cn: root
objectClass: organizationalRole
description: Directory Manager
dn: ou=OP,dc=domain,dc=com
ou: OP
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=domain,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
執行如下命令導入基礎數據、用戶數據,組數據
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/base.ldif
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/usersldif
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /root/groups.ldif
用戶和用戶組全部導入完畢后,我們就可以查詢OpenLDAP的相關信息。
查詢OpenLDAP全部信息,使用如下命令:
ldapsearch -x -b "dc=domain,dc=com" -H ldap://127.0.0.1
ldapsearch -h 127.0.0.1 -D "cn=root,dc=domain,dc=com" -w "your_password" -b "dc=domain,dc=com" "(uid=testuser)"
參考資料 https://www.ilanni.com/?p=13775
因為需要在OpenLdap中添加組的功能,所以需要添加memberOf功能,步驟如下
1、在/etc/openldap目錄下新建文件memberof_load_configure.ldif。內容如下:
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulepath: /usr/lib64/openldap
olcModuleload: {0}memberof.la
dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
說明:上面的參數請根據實際情況修改(比如32的系統的話olcModulepath為/usr/lib/openldap)
dn: cn=module{0},cn=config 如果/etc/openldap/slapd.d/cn=config目錄下已經存在cn=module{0}.ldif 文件的話,你就需要修改 module后面的數字了
dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config 這行中 如果上述目錄中沒有olcDatabase={2}bdb.ldif文件就把 olcDatabase={2}bdb改成olcDatabase={2}hdb
2、執行命令ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。
至此memberof功能添加完成,你可以用客戶端添加一個group試一下,我這邊添加的group的ldif文件如下
dn: cn=gitlab,ou=Group,dc=domain,dc=com
objectClass: top
objectClass: groupOfNames
cn: gitlab
member: uid=testuser,ou=OP,dc=domain,dc=com
將上面代碼保存為 addgroup.ldif,然后執行
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f addgroup.ldif 即可添加成功
可以使用ldap的客戶端連接試試看下效果,客戶端可以使用apache開源的這個,下載地址
http://directory.apache.org/
參考資料:
https://blog.csdn.net/tongdao/article/details/52538365
http://www.bubuko.com/infodetail-1795667.html