bdbを使った時に消せなくなるコンテナエントリが出来てしまうところは、BerkeleyDBのマニュアルやら追いかけたのですが、LPICの試験とは関係ないのと、事務局からexpireの予告はがきが届いたこともあって、試験勉強を進める事にしました。
参考にしている問題集の「徹底攻略LPI Level3問題集」(中島能和:著)によれば、Active Directoryやらを使ってのLinuxアカウントの統合なども出るらしい。
そこで、とりあえず作ったサーバーを使って、VMWareに別VMを追加してPAMとNSSで認証をさせてみようと作業を進めました。
ここで新たな問題が…。
そこで"objectclass: posixAccount"を持つようなアカウント用のコンテナを作って…、と作業を進めてみたもののldapaddが失敗してしまう…。
adding new entry "cn=e0001,ou=accounts,dc=example,dc=org" ldap_add: Invalid syntax (21) additional info: objectclass: value #0 invalid per syntax
あれ、っと思っていろいろ見回してみると、なんとcore.schemaしか登録されていませんでした。
$ ldapsearch -x -W -D cn=admin,cn=config -b cn=schema,cn=config | grep dn: xxxxxxx dn: cn=schema,cn=config dn: cn={0}core,cn=schema,cn=config
システムの"schema"ディレクトリには"nis.ldif"や"cosine.ldif"はありますが、misc.ldifなどはありませんでした。
少し調べてみると"slaptest"コマンドにもslapd同様に"-f"、"-F"を両方指定してslapd.confを変換する事が判りました。 そこで適当なディレクトリに移動して、misc.ldifを作成してみました。
$ mkdir dummy_slapd.d $ mkdir fake_schema $ echo 'include "fake_schema/misc.schema"' > dummy_slapd.conf $ cp /usr/local/etc/openldap/schema/misc.schema fake_schema/ $ slaptest -f dummy_slapd.conf -F dummy_slapd.d config file testing succeeded $ cp dummy_slapd.d/cn\=config/cn\=schema/cn\=\{0\}misc.ldif misc.ldif
これでmisc.ldifが手に入ったと…。
あとはldapaddでスキーマを登録していきます。
$ ldapadd -x -W -D cn=admin,cn=config -f /usr/local/etc/openldap/schema/cosine.ldif $ ldapadd -x -W -D cn=admin,cn=config -f /usr/local/etc/openldap/schema/inetorgperson.ldif $ ldapadd -x -W -D cn=admin,cn=config -f /usr/local/etc/openldap/schema/nis.ldif $ ldapadd -x -W -D cn=admin,cn=config -f misc.ldif Enter LDAP Password: xxxxxxx adding new entry "cn={0}misc" ldap_add: Server is unwilling to perform (53) additional info: no global superior knowledge
最後にエラーになってしまったのは、slaptestで生成したmisc.ldifが、DNとして"cn=misc,cn=schema,cn=config"ではなく、"cn={0}misc"となっているからでした。
変更前: misc.ldifの先頭3行
dn: cn={0}misc objectClass: olcSchemaConfig cn: {0}misc
変更後: misc.ldifの先頭3行
dn: cn=misc,cn=schema,cn=config objectClass: olcSchemaConfig cn: misc
さらにファイルの後ろも編集します。
変更前: misc.ldifの最後9行
structuralObjectClass: olcSchemaConfig entryUUID: 5a6e1624-526d-102e-98e3-738f0cac427d creatorsName: cn=config createTimestamp: 20091021091042Z entryCSN: 20091021091042.575517Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20091021091042Z
この部分をバッサリ削除します。なので変更後は"structuralObjectClass:"から"modifyTimestamp:"までのエントリがなくなります。
2009/10/22追記:
最初に投稿した時点ではmisc.ldifファイルの修正方法が間違っていました。削除していない行があると次のようなエラーがでます。
adding new entry "cn=misc,cn=schema,cn=config"
ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed
あとはこれをldapaddして、終了。 さっさと先に進まないと…。
0 件のコメント:
コメントを投稿