VMware Lightwave Server は、LDAP サーバとしての機能をもっていて、
Windows の Active Directory ドメインコントローラと同じように LDAP 検索をすることも可能です。
Lightwave には、現状ではまだ登録情報をわかりやすく見る UI が無そうなので、
ためしに、Photon Linux に含まれている ldapsearch コマンドで、LDAP 検索してみました。
Lightwave Server は、Photon Linux にインストールされています。
今回はまだ 1.0 TP1 です。
root [ ~ ]# cat /etc/photon-release
VMware Photon Linux 1.0 TP1
この Photon は、Lightwave ドメインコントローラです。
(参考) こちらもどうぞ
VMware Lightwave の Domain Controller と Client の見分け方。
root [ ~ ]# /opt/vmware/bin/vmafd-cli get-domain-state --server-name localhost
Controller ★ドメインコントローラ。
root [ ~ ]# /opt/vmware/bin/vmafd-cli get-domain-name --server-name localhost
lightwave.local ★ドメイン名
ldapsearch もインストールされています。
root [ ~ ]# ldapsearch -VV
ldapsearch: @(#) $OpenLDAP: ldapsearch 2.4.40 (Apr 15 2015 23:12:31) $
@discus-test:/usr/src/photon/BUILD/openldap-2.4.40/clients/tools
(LDAP library: OpenLDAP 20440)
root [ ~ ]# which ldapsearch
/usr/bin/ldapsearch
root [ ~ ]# rpm -qf /usr/bin/ldapsearch
openldap-2.4.40-1.x86_64
たとえば、下記のように検索すると、
lightwave.local(今回の Lightwave ドメイン名)の LDAP エントリを全件表示できます。
これですべてのエントリが表示できるので、そこからあたりを付けます。
今回の ldapsearch の検索では・・・
- 「-D」で Lightwave ドメイン管理者ユーザを指定しています。
- 「-d」 で、検索対象を指定しています。
- 「-w」 で、パスワードを指定します。※大文字の「-W」にすると、都度入力にすることもできます。
※コマンドラインを簡略化するため、最初に「lightwave.local\Administrator」のパスワードを変数にいれてしまっています。
※全件表示は多いので省略してます。
root [ ~ ]# pw=<Administrator のパスワード>
root [ ~ ]# ldapsearch -D "cn=Administrator,cn=users,dc=lightwave,dc=local" -b "dc=lightwave,dc=local" -w $pw
結果の全件表示からアタリを付けて、ldapsearch の検索内容を変更してみます。
例1: 検索先「-b cn=users,dc=lightwave,dc=local」 にしぼってユーザを探してみます。
ついでに userPrincipalName が lw_user01@lightwave.local のエントリだけ表示しています。
root [ ~ ]# ldapsearch -D 'cn=Administrator,cn=users,dc=lightwave,dc=local' -b 'cn=users,dc=lightwave,dc=local' -w $pw userPrincipalName=lw_user01@lightwave.local
# extended LDIF
#
# LDAPv3
# base <cn=users,dc=lightwave,dc=local> with scope subtree
# filter: userPrincipalName=lw_user01@lightwave.local
# requesting: ALL
#
# user01 lw, users, lightwave.local
dn: CN=user01 lw,cn=users,dc=lightwave,dc=local
nTSecurityDescriptor:: AQAEgBQ~(省略)
givenName: user01
sn: lw
userPrincipalName: lw_user01@lightwave.local
sAMAccountName: lw_user01
cn: user01 lw
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
例2: Lightwave ドメインに参加しているサーバを探してみる。
検索先を「-b 'ou=Computers,dc=lightwave,dc=local'」 に変更して、
さらにobjectClass が computer のエントリを検索します。
表示する属性情報も、dn cn vmwMachineGUID の3つにしぼってみました。
root [ ~ ]# ldapsearch -D 'cn=Administrator,cn=users,dc=lightwave,dc=local' -b 'ou=Computers,dc=lightwave,dc=local' -w $pw '(objectClass=computer)' dn cn vmwMachineGUID
# extended LDIF
#
# LDAPv3
# base <ou=Computers,dc=lightwave,dc=local> with scope subtree
# filter: (objectClass=computer)
# requesting: dn cn vmwMachineGUID
#
# photon01, Computers, lightwave.local
dn: cn=photon01,ou=Computers,dc=lightwave,dc=local
vmwMachineGUID: 9cfed666-dc7f-49da-88bc-6611c400399e
cn: photon01
# photon02, Computers, lightwave.local
dn: cn=photon02,ou=Computers,dc=lightwave,dc=local
vmwMachineGUID: 701681b6-1a85-4a6f-b7c1-c09aa4466d34
cn: photon02
# photon03, Computers, lightwave.local
dn: cn=photon03,ou=Computers,dc=lightwave,dc=local
vmwMachineGUID: 25662494-ea52-428f-bdea-66ad816b67e4
cn: photon03
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
ldapsearch が使いにくかったら、普通の Linux コマンド grep などを併用してユーザを探したりできます。
下記のような感じで、Lightwave ドメインに作成したユーザが、だいたいわかります。
ちなみに、管理者ユーザや自分で作成したユーザ以外にもビルトインのユーザが存在しているようです。
root [ ~ ]# ldapsearch -D 'cn=Administrator,cn=users,dc=lightwave,dc=local' -b 'cn=users,dc=lightwave,dc=local' -w $pw | grep userPrincipalName
userPrincipalName: gowatana@lightwave.local
userPrincipalName: krbtgt/LIGHTWAVE.LOCAL@LIGHTWAVE.LOCAL
userPrincipalName: K/M@LIGHTWAVE.LOCAL
userPrincipalName: Administrator@LIGHTWAVE.LOCAL
userPrincipalName: lw_user01@lightwave.local
userPrincipalName: lw_user02@lightwave.local
ドメイン参加しているメンバサーバがだいたいわかります。
root [ ~ ]# ldapsearch -D 'cn=Administrator,cn=users,dc=lightwave,dc=local' -b 'ou=Computers,dc=lightwave,dc=local' -w $pw | grep dn
dn: ou=Computers,dc=lightwave,dc=local
dn: cn=photon01,ou=Computers,dc=lightwave,dc=local
dn: cn=photon02,ou=Computers,dc=lightwave,dc=local
dn: cn=photon03,ou=Computers,dc=lightwave,dc=local
この先 Lightwave がどう進化するかわかりませんが、現状の dir-cli コマンドだけだとわからない情報があったりします。
今回はうっかり登録したユーザや参加させたメンバを忘れてしまったため、つい ldapsearch してしまいました・・・
以上、Lightwave で LDAP 検索をしてみる話でした。