跳到主要內容
節省工具箱Jason Tools
經驗分享

LDAPSearch 常用 CLI 指令整理 (持續更新)

Jason Cheng 瀏覽 13,967 次
LDAPSearch 常用 CLI 指令整理 (持續更新)
本文目錄
  1. 前置作業
  2. 指令列表
  3. 參考資料

OpenLDAP 是開源界非常重要的目錄服務套件,在許多應用服務與伺服器都會用到它。

儘管有許多套件會經由 LDAP 協定與 OpenLDAP 介接,但是熟悉它的命令列指令仍然是非常重要的測試與除錯方式,尤其是可以用來測試各種 LDAP 伺服器連接查詢的 LDAPSearch。

本文整理我較常使用的指令,連接對象包含 Active Directory、Zimbra、UCS (Univention Corporate Server)。

前置作業

請確認有正確的權限以及預計要存取的 LDAP 伺服器帳號與密碼。

指令列表

以下將分類整理不同對象的指令,請進行以下替換:

  • LDAPSERVER 替換為您的伺服器
  • BINDUSER 替換為您的帳戶
  • BINDPASSWORD 替換為您的密碼
  • OU=OU 替換為您的組織單位
  • DC=DOMAIN,DC=LOCAL 替換為您的 Base DN

帳號相關操作

# 驗證是否有此帳號 (AD)
ldapsearch -x -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(&(objectclass=user)(sAMAccountName=username))"


# 驗證是否有此帳號 (LDAP)
ldapsearch -x -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(&(objectClass=person)(uid=username))"


# 驗證是否有此帳號 (Zimbra)
ldapsearch -x -h LDAPSERVER:389 -b "ou=people,DC=DOMAIN,DC=LOCAL" -D "uid=zimbra,cn=admins,cn=zimbra" -w "BINDPASSWORD" "(&(objectClass=zimbraAccount)(uid=username))"


# 以完整格式搜尋使用者並取回帳號名稱 (AD)
ldapsearch -x -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -s sub "(userPrincipalName=username@domain.local)" | grep "sAMAccountName"


# 以完整格式搜尋使用者並取回別名 (AD)
ldapsearch -x -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -s sub "(userPrincipalName=username@domain.local)" | awk -F ":" -v i="mailNickname" '$1 == "mailNickname" {print $2}'


# 搜尋具有指定屬性及文字的帳號 (LDAP)
ldapsearch -x -H "ldap://LDAPSERVER" -b "CN=Users,DC=DOMAIN,DC=LOCAL" -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -s base "(&(objectClass=user)(description=*字串*))"

群組相關操作

# 列出群組資訊 (AD)
ldapsearch -x -h LDAPSERVER:3268 -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "DC=DOMAIN,DC=LOCAL" "(&(objectclass=Group)(cn=群組名稱))"


# 列出群組資訊 (Univention/UCS)
ldapsearch -x -h LDAPSERVER:7389 -D "uid=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "DC=DOMAIN,DC=LOCAL" "(&(objectclass=univentionGroup)(cn=群組名稱))"


# 列出群組資訊 (Zimbra)
ldapsearch -x -h LDAPSERVER:389 -D "uid=zimbra,cn=admins,cn=zimbra" -w "BINDPASSWORD" -b "cn=groups,dc=DOMAIN,dc=LOCAL" "(&(objectClass=zimbraGroup)(cn=群組名稱))"


# 取出某個群組下的成員帳號 (sAMAccountName) 清單 (AD)
ldapsearch -x -h LDAPSERVER:3268 -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "OU=OU,DC=DOMAIN,DC=LOCAL" "(&(objectclass=user)(memberOf=CN=群組名稱,OU=組織單位2,OU=組織單位1,DC=DOMAIN,DC=LOCAL))" sAMAccountName


# 取出某個群組下的成員郵件 (mail) 清單 (AD)
ldapsearch -x -h LDAPSERVER:3268 -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "OU=OU,DC=DOMAIN,DC=LOCAL" "(&(objectclass=user)(memberOf=CN=群組名稱,OU=組織單位2,OU=組織單位1,DC=DOMAIN,DC=LOCAL))" mail


# 取出某個群組下的成員帳號 (uid,displayName) 清單 (Univention/UCS)
ldapsearch -x -h LDAPSERVER:7389 -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "OU=OU,DC=DOMAIN,DC=LOCAL" "(&(objectclass=person)(memberOf=CN=群組名稱,OU=組織單位2,OU=組織單位1,DC=DOMAIN,DC=LOCAL))" uid displayName


# 取出某個群組下的成員主要郵件 (mail) 清單 (Univention/UCS)
ldapsearch -x -h LDAPSERVER:7389 -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" -b "OU=OU,DC=DOMAIN,DC=LOCAL" "(&(objectclass=user)(memberOf=CN=群組名稱,OU=組織單位2,OU=組織單位1,DC=DOMAIN,DC=LOCAL))" mailPrimaryAddress

其它

# 避免資料過長強制斷行 -o ldif-wrap=no
ldapsearch -x -o ldif-wrap=no -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(uid=username)"


# 採用 LDAP 通用資源格式連接 -H URI
ldapsearch -x -H "ldap://LDAPSERVER" -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(uid=username)"


# 採用主機與埠號格式連接 -h host
ldapsearch -x -h LDAPSERVER:389 -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(uid=username)"


# 回傳多個欄位使用空格分開,例 displayName cn
ldapsearch -x -h LDAPSERVER:389 -b "OU=OU,DC=DOMAIN,DC=LOCAL" -D "CN=BINDUSER,CN=Users,DC=DOMAIN,DC=LOCAL" -w "BINDPASSWORD" "(uid=username)" displayName cn

參考資料

延伸閱讀