colinux環境へのopenldap install - ポイントは BerkeleyDB - end0tknrのkipple - web写経開発
以前、colinux環境へinstallした↑こちらのopenLDAPに対し、↓こちらを参考にしながら、独自属性(スキーマ)を追加。
openldapサーバを構築しよう [No.2 スキーマ追加の準備]:アシマネくんのほんわか日記:So-netブログ
「参考にしながら...」って、写経ですけど
スキーマファイルの作成
各属性の定義を、その属性を保持するクラスの定義が必要です
$ su - # vi /usr/local/openldap/etc/openldap/schema/endo_test.schema ##属性定義 attributeTypes: ( 1.1.2.1.1 NAME 'keiCode' DESC 'SEXY HEIM TEI CODE' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 ) #属性構文(型) ##オブジェクト クラス定義 objectclass ( 1.1.2.2.1 NAME 'sexyHeimObject' #クラス名 DESC 'Sexy Heim Object' SUP 'person' #スーパークラス STRUCTURAL MAY ( keiCode ) ) #任意属性
オブジェクト識別子 = 1.1.2.1.1
オブジェクト識別子の指定方法は理解できていませんが、「ローカルで利用する場合は、1.1台が利用可」ということなので、なんとなく「1.1.2.1.1」を指定しています。
SYNTAX(属性構文) = 1.3.6.1.4.1.1466.115.121.1.15
SYNTAX(属性構文)とは、属性値の型を表すOIDで、次のurlで、様々な方が記載されています。
http://unixlife.jp/linux/centos-6/openldap-schema-2.html
slapd.confへのスキーマファイルの追加と反映
# vi /usr/local/openldap/etc/openldap/slapd.conf : include /usr/local/openldap/etc/openldap/schema/core.schema include /usr/local/openldap/etc/openldap/schema/cosine.schema include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema include /usr/local/openldap/etc/openldap/schema/nis.schem include /usr/local/openldap/etc/openldap/schema/endo_test.schema #←ココ
先程、作成したスキーマファイルを↑このようにopenldapの設定ファイルへ追加後、openldapを再起動します。
停止 # kill -INT `cat /usr/local/openldap/var/run/slapd.pid` 起動 # /usr/local/openldap/libexec/slapd -u ldap
動作確認
LDIFファイルの作成と追加
$ vi /home/endo/tmp/add.ldif dn: uid=test5001,ou=People,dc=my-domain,dc=com uid: test5001 cn: testtest5001 sn: test objectClass: top objectClass: person objectClass: posixAccount objectClass: shadowAccount objectClass: sexyHeimObject ####←ココ userPassword: {SSHA}s6qZYlxMIYdSnWa8X9NHC06EfzYXKBCy shadowLastChange: 16398 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 5001 gidNumber: 5001 homeDirectory: /home/test5001 gecos: test5001 keiCode: tei5001 ####←ココ $ ldapadd -x -D cn=Manager,dc=my-domain,dc=com -w secret -f add.ldif
最初は、「objectClass: sexyHeimObject」の指定が漏れていて、次のエラーとなっていました。
ldap_add: Object class violation (65) additional info: attribute 'keiCode' not allowed
colinux環境へのopenldap install - ポイントは BerkeleyDB - end0tknrのkipple - web写経開発
追加結果の確認は、以前作成した↑こちらのperl scriptを利用していますが、次のように問題なく「keiCode: tei5001」が登録されていることが確認できました。
$ ./dump_ldap_users.pl ------------------------------------------------------------------------ dn:uid=test5001,ou=People,dc=my-domain,dc=com uid: test5001 cn: testtest5001 sn: test objectClass: top person posixAccount shadowAccount sexyHeimObject userPassword: {SSHA}s6qZYlxMIYdSnWa8X9NHC06EfzYXKBCy shadowLastChange: 16398 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 5001 gidNumber: 5001 homeDirectory: /home/test5001 gecos: test5001 keiCode: tei5001