LDAP學習筆記之二:389-DS(RHDS) 增刪改查基本操作


一、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
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM