OpenLDAP 資料一覧
2008/3/22更新
対応バージョン: 2.4.8
LDIFファイルからLDAPサーバにUNIXユーザ情報を登録する手順を示す。
ここでは以下のツリー内にユーザ情報を作成してみる。
dc=jp | +- dc=private | +- ou=People | +- uid=ldapuser
用意するLDIFファイルは以下のような内容になる。
尚、userPasswordに設定する内容は平文でもよいが、あらかじめslappasswdコマンドで暗号化パスワードを生成しておいてもよい(暗号化方式のデフォルトはSSHA)。
どちらの場合でも登録時には暗号化されて格納される。
% /usr/local/sbin/slappasswd -s <パスワード> {SSHA}3M9xmc89c8TRf1xXlDJ4lary4WTiHD5S
関連資料・記事
% vi sample.ldif dn: dc=private,dc=jp objectClass: dcObject objectClass: organization dc: private o: private Organization dn: ou=People,dc=private,dc=jp objectclass: organizationalUnit ou: People dn: uid=ldapuser,ou=People,dc=private,dc=jp objectClass: account objectClass: posixAccount uid: ldapuser userPassword: {SSHA}3M9xmc89c8TRf1xXlDJ4lary4WTiHD5S uidNumber: 1000 gidNumber: 1000 cn: ldapuser homeDirectory: /home/ldapuser loginShell: /bin/bash
objectClassにposixAccountを指定しているが、これはデフォルトでincludeするスキーマcore.schemaではなくnis.schemaで定義されている(nis.schemaで使用するmanager属性はさらにcosine.schemaで定義されている)のでslapd.confで上記2スキーマをincludeしておく。
このLDIFファイルをsample.ldifとして作成し、実際にLDAPサーバに登録してみる。
openldapにはLDIFフォーマットのファイルの内容をLDAPサーバに登録するためにslapaddというコマンドが用意されているのでこれを使用する。
尚、LDIFファイルに日本語が含まれていても問題ないようにファイルの文字コードはUTF-8にしておく。
登録時にはslapdが停止させる必要がある。
% sudo service slapd stop % sudo /usr/local/sbin/slapadd -l sample.ldif % sudo service slapd start
-fでslapdと同様に設定ファイルを指定することができるが、slapdと同じくデフォルトが/usr/local/etc/openldap/slapd.confなので、ここでは-fオプションは使わない。
これで/usr/local/var/openldap-dataディレクトリに上記の登録情報が格納される。
実際に格納されたかどうかldapsearchで調べてみる。
% ldapsearch -h localhost -x -b 'ou=People,dc=private,dc=jp' 'uid=ldapuser'
これは、
% ldapsearch -h localhost -x -b 'dc=private,dc=jp' 'uid=ldapuser'
として検索ベースからou=Peopleを省いてもよい。
そうすると検索対象はdc=private,dc=jp以下の全てのサブツリーから行なわれる。
# extended LDIF # # LDAPv3 # base <dc=private,dc=jp> with scope subtree # filter: uid=ldapuser # requesting: ALL # # ldapuser, People, private.jp dn: uid=ldapuser,ou=People,dc=private,dc=jp objectClass: account objectClass: posixAccount uid: ldapuser userPassword:: e1NTSEF9M005eG1jODljOFRSZjF4WGxESjRsYXJ5NFdUaUhENVM= uidNumber: 1000 gidNumber: 1000 cn: ldapuser homeDirectory: /home/ldapuser loginShell: /bin/bash # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
ここでuserPassword属性の表示に着目する。
userPasswordは{SSHA}...で登録したはずだが検索結果はe1NT...となっている。
このようにuserPassword属性の値はエンコードされて表示される。
属性名の後に::が続く場合はBase64でエンコードされたものという意味である。
これはバイナリデータでも同様にエンコードされる。
これらデータは単にBase64でエンコードされているだけなのでアクセス制御をきちんとかけておかないと外部に漏洩してしまうので注意が必要である。
また、登録されている情報を参照するにはldapsearchによる検索の他にslapcatを使用して登録内容の一覧が確認する方法もある。
# /usr/local/sbin/slapcat dn: dc=private,dc=jp objectClass: dcObject objectClass: organization dc: private o: private Organization structuralObjectClass: organization entryUUID: ddafe7aa-8baf-102c-9c1c-cdb4c4747cc6 creatorsName: cn=Manager,dc=private,dc=jp modifiersName: cn=Manager,dc=private,dc=jp createTimestamp: 20080321163030Z modifyTimestamp: 20080321163030Z entryCSN: 20080321163030.509867Z#000000#000#000000 dn: ou=People,dc=private,dc=jp objectClass: organizationalUnit ou: People structuralObjectClass: organizationalUnit entryUUID: ddb07238-8baf-102c-9c1d-cdb4c4747cc6 creatorsName: cn=Manager,dc=private,dc=jp modifiersName: cn=Manager,dc=private,dc=jp createTimestamp: 20080321163030Z modifyTimestamp: 20080321163030Z entryCSN: 20080321163030.513469Z#000000#000#000000 dn: uid=ldapuser,ou=People,dc=private,dc=jp objectClass: account objectClass: posixAccount uid: ldapuser userPassword:: e1NTSEF9SkpMTUNZWnloRitmOG0rMUlCb01xK1E0WHZuZWwxUjI= uidNumber: 1000 gidNumber: 1000 cn: ldapuser homeDirectory: /home/ldapuser loginShell: /bin/bash structuralObjectClass: account entryUUID: ddb35ed0-8baf-102c-9c1e-cdb4c4747cc6 creatorsName: cn=Manager,dc=private,dc=jp modifiersName: cn=Manager,dc=private,dc=jp createTimestamp: 20080321163030Z modifyTimestamp: 20080321163030Z entryCSN: 20080321163030.532633Z#000000#000#000000
関連資料・記事