2008年8月1日金曜日

structuralObjectClassが足りない

# ldapadd -x -W -D "cn=Manager,dc=osstech,dc=co,dc=jp" -f /home/yasuma/mod1.ldif
Enter LDAP Password:
adding new entry "cn=group6,ou=Groups,dc=osstech,dc=co,dc=jp"
ldap_add: Internal (implementation specific) error (80)
additional info: no structuralObjectClass operational attribute


こんなエラーが出たときはStructuralObjectClassとして定義されているObjectClassが足りないので、/etc/openldap/schema/xxxx.schemaなどにある以下のようなobjectclassを

objectclass ( 1.3.6.1.1.1.2.2 NAME 'posixGroup'
DESC 'Abstraction of a group of accounts'
SUP top STRUCTURAL
MUST ( cn $ gidNumber )
MAY ( userPassword $ memberUid $ description ) )

structuralObjectClass: posixGroup

として追加。

structuralObjectClassは、1つのDNに対して1つだけ。それ以外のobjectClassを追加したいときは、

objectclass ( 1.3.6.1.4.1.7165.2.2.4 NAME 'sambaGroupMapping' SUP top AUXILIARY
DESC 'Samba Group Mapping'
MUST ( gidNumber $ sambaSID $ sambaGroupType )
MAY ( displayName $ description $ sambaSIDList ))

のようにAUXILIARYとして定義されているobjectClassを追加。

結果としてこんなLDIFに。

dn: cn=group6,ou=Groups,dc=osstech,dc=co,dc=jp
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
cn: group6
gidNumber: 1005
structuralObjectClass: posixGroup



0 件のコメント:

コメントを投稿