トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

技術的雑談-OpenLDAPのError(80)

技術的雑談-OpenLDAPのError(80)


 環境

  • CentOS 5.2
  • OpenLDAP 2.3.27 (CentOS 5.2標準)

 現象


  • LDAPにアカウントなどを追加しようとしたときに追加できない。

 原因と解決


1. 親Objectが未登録状態


LDAPのDBを作ってそのままの状態だと、suffixのDNに対してObjectが作られていない

例えば前述の例で言うと、dc=sample.dc=comがsuffixで、com-sampleは表示されているが、JXplorerなどで選択すると、

unable to list dc=sample,dc=com

とか、

Unable to perform Read entry operation.

とかが表示されるハズ。

これは何を意味するかというと、
「comの子のsampleなんてObjectは見つからないよ」
という意味である。

引っ掛かりやすいが、slapd.confでsuffixに書いたObject(ツリー)はJXplorerでは表示されるが、LDAP的にはまだObjectがない。

Objectが実在しないので当然dc=sample,dc=comの下に新しいObjectは作成できない。

まずは、slapd.confのsuffixに書いたObjectをldapaddで実際に追加してやる必要がある。

ちなみに、今回の例では、追加してやるObjectは「sample」だけでよい。
「com」に関してはsuffixが当てはまらなくなるので追加することはできない。
(ldapaddなどで無理やりdc=comなるObjectを追加しようとすると「no global superior knowledge」と怒られる。エラーコードは53。)

2. no structuralObjectClass operational attribute


で、これではいけないということでdc=sample,dc=comにObjectを追加しようと、以下のようなLDIFを書いてldapaddに食わせてみる。

dn:dc=sample,dc=com
objectClass:dcObject
objectClass:top
dc:sample

しかし、これを実行すると以下のように怒られる。

# ldapadd -x -D "cn=Manager,dc=sample,dc=com" -w hogehoge -v -f init.ldif
ldap_initialize( <DEFAULT> )
add objectClass:
        dcObject
        top
add dc:
        sample
adding new entry "dc=sample,dc=com"
modify complete
ldap_add: Internal (implementation specific) error (80)
        additional info: no structuralObjectClass operational attribute

これが何を意味するのかイマイチわからなかったが、どうも「StructuralなObject」をsuffixのObjectに対しては追加する必要があるらしい。
「StructuralなObject」とは、schemaで「STRUCTURAL」が指定されているObjectという事らしい。

例えば、core.schemaを見ると、

objectclass ( 2.5.6.2 NAME 'country'
	DESC 'RFC2256: a country'
	SUP top STRUCTURAL
	MUST c
	MAY ( searchGuide $ description ) )

なんて定義があって、要は「SUP」の行に「STRUCTURAL」が書いてあるobjectClassをsuffixのObjectには使えという事らしい。

よって、上記のLDIFは、

dn:dc=sample,dc=com
objectClass:dcObject
objectClass:top
objectClass:organization
dc:sample
o:sample

と、するとちゃんと通るようになる。

ちなみに、CentOS5.2でOpenLDAPをインストール時に選択したときについてくるSchemaでSTRUCTURALなObjectは以下のものがある。

  • core.schema
    • country
    • locality
    • organization
    • organizationalUnit
    • person
    • organizationalPerson
    • organizationalRole
    • groupOfNames
    • residentialPerson
    • applicationProcess
    • applicationEntity
    • dSA (RFC2256: a directory system agent (a server))
    • device
    • groupOfUniqueNames
    • cRLDistributionPoint
    • dmd
  • cosine.schema
    • pilotPerson 又は newPilotPerson
    • account
    • document
    • room
    • documentSeries
    • domain
    • RFC822localPart
    • dNSDomain
    • friendlyCountry
    • pilotOrganization
    • pilotDSA
  • nis.schema
    • posixGroup
    • ipService
    • ipProtocol
    • oncRpc
    • ipNetwork
    • nisNetgroup
    • nisMap
    • nisObject

 履歴

2009/04/13 -- 初版

技術的雑談へ戻る

 突っ込み

name   comment  
URL (入力するとす ぱ むとみなします!)


技術的雑談へ戻る

TrackBack

TrackBack URL for this entry:
http://www.himajin2001.com/fswiki/tb.cgi/%B5%BB%BD%D1%C5%AA%BB%A8%C3%CC%2DOpenLDAP%A4%CEError%2880%29

技術的雑談へ戻る

最終更新日時:最終更新時間:2009年04月13日 15時27分34秒
トップページに戻る