LDAP基礎:7:使用ldapmodify和ldapdelete進行修改或刪除
阿新 • • 發佈:2018-11-16
這篇文章主要介紹一下如何使用ldapmodify和ldapdelete進行資訊的修改或者刪除,並在前面新增的資料的基礎上進行一些簡單的例子的操作。
操作方式
執行場所
對LDAP進行操作,場所不限,LDAP伺服器上進行操作,也可以在可以連線LDAP服務的客戶端進行
使用命令
常用的資料的刪除,可以使用ldapmodify命令也可以使用ldapdelete
Option介紹
命令的Option就不再分命令來介紹,常用的Option的資訊和用途整理如下:
Option | 說明 |
---|---|
-H | ldapuri,格式為ldap://機器名或者IP:埠號,不能與-h和-p同時使用 |
-h | LDAP伺服器IP或者可解析的hostname,與-p可結合使用,不能與-H同時使用 |
-p | LDAP伺服器埠號,與-h可結合使用,不能與-H同時使用 |
-x | 使用簡單認證方式 |
-D | 所繫結的伺服器的DN |
-w | 繫結DN的密碼,與-W二者選一 |
-W | 不輸入密碼,會互動式的提示使用者輸入密碼,與-w二者選一 |
-c | 出錯後忽略當前錯誤繼續執行,預設情況下遇到錯誤即終止 |
-n | 模擬操作但並不實際執行,用於驗證,常與-v一同使用進行問題定位 |
-v | 顯示詳細資訊 |
-d | 顯示debug資訊,可設定級別 |
-e | 設定客戶端證書 |
-E | 設定客戶端私鑰 |
注意:
常見的選項中-f,在ldapdelete和ldapmodify中有明顯的不同, ldapdelete中主要是用於記錄要刪除的dn的資訊,而ldapmodify的-f則指定的是要修改的ldif的檔案內容。
修改資訊:ldapmodify
事前確認
確認一下Barbara的現在的資訊
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensen
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensen
# requesting: ALL
#
# Barbara Jensen, example.org
dn: cn=Barbara Jensen,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
title: the world's most famous mythical manager
mail: [email protected]
uid: bjensen
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
修改Barbara的title
Barbara的title寫的是“the world’s most famous mythical manager”,這有點不太謙虛了,修改稱“one of the world’s most famous mythical manager”,因為畢竟官方文件的例子中還有一個叫babs的朋友。
- 準備用於修改的ldif檔案
liumiaocn:openldap liumiao$ cat modifybarbara.ldif
dn: cn=Barbara Jensen,dc=example,dc=org
changetype: modify
replace: title
title: one of the world's most famous mythical manager
liumiaocn:openldap liumiao$
- 使用準備的ldif檔案使用-f傳給ldapmodify進行資訊修改
liumiaocn:openldap liumiao$ ldapmodify -a -H ldap://192.168.31.242:389 -D "cn=admin,dc=example,dc=org" -w admin -f modifybarbara.ldif
modifying entry "cn=Barbara Jensen,dc=example,dc=org"
liumiaocn:openldap liumiao$
- 結果確認
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensen
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensen
# requesting: ALL
#
# Barbara Jensen, example.org
dn: cn=Barbara Jensen,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
mail: [email protected]
uid: bjensen
title: one of the world's most famous mythical manager
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
可以看到已經完成了資訊的修改
給Barbara新增一個description的欄位
- 事前準備ldif檔案
liumiaocn:openldap liumiao$ cat modifybarbara.ldif
dn: cn=Barbara Jensen,dc=example,dc=org
changetype: modify
add: description
description: Barbara description
liumiaocn:openldap liumiao$
- 將ldif檔案通過-f傳給ldapmodify
liumiaocn:openldap liumiao$ ldapmodify -a -H ldap://192.168.31.242:389 -D "cn=admin,dc=example,dc=org" -w admin -f modifybarbara.ldif
modifying entry "cn=Barbara Jensen,dc=example,dc=org"
liumiaocn:openldap liumiao$
- 結果確認
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensen
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensen
# requesting: ALL
#
# Barbara Jensen, example.org
dn: cn=Barbara Jensen,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
mail: [email protected]
uid: bjensen
title: one of the world's most famous mythical manager
description: Barbara description
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
將Barbara移動到ou=People中
- 事前準備ldif檔案
liumiaocn:openldap liumiao$ cat modifybarbara.ldif
dn: cn=Barbara Jensen,dc=example,dc=org
changetype: modrdn
newrdn: uid=bjensen
deleteoldrdn: 0
newsuperior: ou=people,dc=example,dc=org
liumiaocn:openldap liumiao$
- 將ldif檔案通過-f傳給ldapmodify
liumiaocn:openldap liumiao$ ldapmodify -a -H ldap://192.168.31.242:389 -D "cn=admin,dc=example,dc=org" -w admin -f modifybarbara.ldif
modifying rdn of entry "cn=Barbara Jensen,dc=example,dc=org"
liumiaocn:openldap liumiao$
- 結果確認
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensen
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensen
# requesting: ALL
#
# bjensen, People, example.org
dn: uid=bjensen,ou=People,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
mail: [email protected]
uid: bjensen
title: one of the world's most famous mythical manager
description: Barbara description
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
修改Barbara的uid
- 事前準備ldif檔案
liumiaocn:openldap liumiao$ cat modifybarbara.ldif
dn: uid=bjensen,ou=people,dc=example,dc=org
changetype: modrdn
newrdn: uid=bjensenuid
deleteoldrdn: 0
newsuperior: ou=people,dc=example,dc=org
liumiaocn:openldap liumiao$
- 將ldif檔案通過-f傳給ldapmodify
liumiaocn:openldap liumiao$ ldapmodify -a -H ldap://192.168.31.242:389 -D "cn=admin,dc=example,dc=org" -w admin -f modifybarbara.ldif
modifying rdn of entry "uid=bjensen,ou=people,dc=example,dc=org"
liumiaocn:openldap liumiao$
- 結果確認
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin
...省略
# bjensenuid, People, example.org
dn: uid=bjensenuid,ou=People,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
mail: [email protected]
uid: bjensen
uid: bjensenuid
title: one of the world's most famous mythical manager
description: Barbara description
...省略
liumiaocn:openldap liumiao$
使用ldapdelete或者ldapmodify進行刪除
刪除Barbara的description欄位
- 事前準備ldif檔案
liumiaocn:openldap liumiao$ cat modifybarbara.ldif
dn: uid=bjensenuid,ou=people,dc=example,dc=org
changetype: modify
delete: description
liumiaocn:openldap liumiao$
- 將ldif檔案通過-f傳給ldapmodify
liumiaocn:openldap liumiao$ ldapmodify -a -H ldap://192.168.31.242:389 -D "cn=admin,dc=example,dc=org" -w admin -f modifybarbara.ldif
modifying entry "uid=bjensenuid,ou=people,dc=example,dc=org"
liumiaocn:openldap liumiao$
- 結果確認
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensenuid
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensenuid
# requesting: ALL
#
# bjensenuid, People, example.org
dn: uid=bjensenuid,ou=People,dc=example,dc=org
objectClass: inetOrgPerson
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
mail: [email protected]
uid: bjensen
uid: bjensenuid
title: one of the world's most famous mythical manager
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
liumiaocn:openldap liumiao$
刪除Barbara
使用ldapdelete刪除entry只需指定dn即可,比如刪除前文中修改uid後的Barbara:
liumiaocn:openldap liumiao$ ldapdelete -x -h 192.168.31.242 -D "cn=admin,dc=example,dc=org" -w admin "uid=bjensenuid,ou=People,dc=example,dc=org"
liumiaocn:openldap liumiao$ echo $?
0
liumiaocn:openldap liumiao$
刪除後結果確認, 使用此uid已經無法查詢出相關記錄了
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b "dc=example,dc=org" -D "cn=admin,dc=example,dc=org" -w admin uid=bjensenuid
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: uid=bjensenuid
# requesting: ALL
#
# search result
search: 2
result: 0 Success
# numResponses: 1
liumiaocn:openldap liumiao$
使用ldapmodify結合如下ldif也同樣可以實現刪除,這裡不再演示
dn: uid=bjensenuid,ou=people,dc=example,dc=org
changetype: delete
總結
使用ldapmodify和ldapdelete能夠實現常見的ldap資訊修改和刪除相關的需要。