一、OpenLDAP命令匯總及常用參數
# 以下命令需要安裝openldap-clients包
ldapsearch:搜索 OpenLDAP 目錄樹條目。 ldapadd:通過 LDIF 格式,添加目錄樹條目。 ldapdelete:刪除 OpenLDAP 目錄樹條目。 ldapmodify:修改 OpenLDAP 目錄樹條目。 ldapwhoami:效驗 OpenLDAP 用戶的身份。 ldapmodrdn:判斷 OpenLDAP 目錄樹 DN 條目。 ldapcompare:判斷 DN 值和指定參數值是否屬於同一個條目。 ldappasswd:修改 OpenLDAP 目錄樹用戶條目實現密碼重置,建議加上-S參數自定義密碼,否則會隨機生產一個密碼,和系統PAM建立合理的關系后可以使用系統的passwd命令修改(建議)。 slaptest:驗證 slapd.conf 文件或 cn=配置目錄。 slapindex:創建 OpenLDAP 目錄樹索引,提供查詢效率。 slapcat:將數據條目轉換為 OpenLDAP 的 LDIF 文件
二、導入樣例數據
1.修改樣例文件
[root@ldap-server1 ~]# rpm -qf /usr/share/dirsrv/data/Example.ldif 389-ds-base-1.3.10.2-15.el7_9.x86_64 [root@ldap-server1 ~]# cp /usr/share/dirsrv/data/Example.ldif . [root@ldap-server1 ~]# sed -i 's/dc=example/dc=ldap-server1, dc=example/g' Example.ldif #修改樣例文件中服務的DN,根據實際情況修改
2.登錄console,打開目錄樹
3.選擇導入數據
4.選擇樣例文件,務必點擊Continue on error選項,並點擊ok
5.驗證導入結果,可以看到新增了很多用戶
四、新增
ldapadd
[root@ldap-server1 ~]# ldapsearch -x "(uid=jvedder)" > blues.ldif #生成新用戶的ldif文件,從另一個用戶生成即可 [root@ldap-server1 ~]# vim blues.ldif #簡單修改 dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com givenName: Elwood telephoneNumber: +1 408 555 4668 sn: Blues ou: Product Development ou: People l: Chicago manager: uid=bparker,ou=People,dc=ldap-server1,dc=example,dc=com roomNumber: 3445 mail: jvedder@example.com facsimileTelephoneNumber: +1 408 555 0111 objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson uid: eblues cn: Elwood Blues [root@ldap-server1 ~]# ldapadd -x -f blues.ldif #添加會報錯,提示匿名用戶沒有權限 adding new entry "uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com" ldap_add: Insufficient access (50) additional info: Insufficient 'add' privilege to add the entry 'uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com'. [root@ldap-server1 ~]# ldapadd -x -c -f blues.ldif -W #指定用戶,這里用的是~/.ldaprc中的用戶,-c是當出現報錯是繼續執行,等同於上面導入用戶時Continue on error選項 Enter LDAP Password: adding new entry "uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com" [root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL #查詢剛剛新增的用戶信息 dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com givenName: Elwood telephoneNumber: +1 408 555 4668 ......
五、刪除操作
ldapdelete
1.命令行刪除 [root@ldap-server1 ~]# ldapdelete -x -W uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com Enter LDAP Password: [root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL 2.文件刪除 [root@ldap-server1 ~]# cat delete.ldif uid=scarter,ou=People,dc=ldap-server1,dc=example,dc=com uid=tmorris,ou=People,dc=ldap-server1,dc=example,dc=com [root@ldap-server1 ~]# ldapdelete -x -W -f delete.ldif [root@ldap-server1 ~]# ldapsearch -x "(uid=scarter)" -LLL
六、修改操作
ldapmodify:修改
[root@ldap-server1 ~]# vim blues-modify.ldif #創建需要修改的ldif文件 dn: uid=eblues,ou=People,dc=ldap-server1,dc=example,dc=com #指定需要修改的條目 changetype: modify #指定變更的類型為修改 replace: roomNumber #修改類型的替換操作 即替換該條目的roomNumber屬性 roomNumber: 8888 - replace: l #多個修改操作使用-隔離 l: Belvery Hills - delete: facsimileTelephoneNumber #刪除某個屬性 - add: postalcode #添加某個屬性,具體熟悉可以在控制台中查看用戶的高級選項中查看 postalcode: 10086 - [root@ldap-server1 ~]# ldapmodify -x -f blues-modify.ldif -W [root@ldap-server1 ~]# ldapsearch -x "(uid=eblues)" -LLL
七、查詢操作
ldapsearch:搜索
1.匿名查詢 [root@ldap-server1 ~]# ldapsearch -h ldap-server1.example.com -b ou=people,dc=ldap-server1,dc=example,dc=com -x # -h指定服務的IP地址或在主機名稱 -b 指定從哪個容器查詢,即從哪里開始查詢 -x 使用用戶名密碼方式驗證,不指定用戶和密碼表示使用匿名用過2.指定用戶查詢 2.指定用戶查詢 [root@ldap-server1 ~]# ldapsearch -h ldap-server1.example.com -b ou=people,dc=ldap-server1,dc=example,dc=com -x -D "cn=Directory Manager" -W # -D 指定用戶 -W 在交互式命令行中輸入密碼 3.添加過濾參數 [root@ldap-server1 ~]# ldapsearch -x -LLL 'uid=ldap1' cn gidNumber #過濾uid=ldap1的條目,並獲取其中cn gidNumber字段
簡化命令行搜索
[root@ldap-server1 ~]# vim /etc/openldap/ldap.conf BASE dc=ldap-server1,dc=example,dc=com #等同於 -b URI ldap://ldap-server1.example.com #等同於 -h [root@ldap-server1 ~]# vim ~/.ldaprc BINDDN cn=Directory Manager #等同於 -D
其他常用搜索命令
ldapsearch -x -D "cn=Directory Manager" -W -L #-L以精簡模式顯示,可以有三個LLL ldapsearch -x "(uid=jyu)" -L #查詢uid等於jyu的用戶信息 ldapsearch -x "(uid=jyu)" -LLL mail telephoneNumber #查看uid等於jyu的mail和電話信息 ldapsearch -x "(uid=jyu*)" -LLL mail #模糊查詢 ldapsearch -x "(!(age>=18))" -LLL mail #可以對數值進行比較,!為取反 ldapsearch -x "(&(age=18)(gender=male))" -LLL mail #可以AND查詢多個條件 ldapsearch -x "(|(uid=jyu)(uid=lyf))" -LLL mail #或多個查詢條件 以下為禁止搜索的字符,如果需要查詢需要轉移,或在使用對應的ASCII碼: * \2A ( \28 ) \29 \ \5c (空) \00