エラーno global superior knowledge
はslapd
、新しいエントリを配置する場所がわからないことを意味します。これは通常、適切なデータベースを定義していないことを意味します。新しいシステム(のcn=config
代わりにを使用するシステムslapd.conf
)では、通常、最初に新しいデータベースを追加するか、ldapadd
またはを使用して既存のデータベースエントリを変更しますldapmodify
。たとえば、私のFedora 17システムでは、デフォルトのインストールで次のようなデータベースがホスト用にセットアップされますdc=my-domain,dc=com
。
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
creatorsName: cn=config
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
組織(o=myorganization, c=fr
)をホストするには、次のLDIFファイルを作成する必要があります。
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: o=myorganization, c=fr
-
replace: olcRootDN
olcRootDN: cn=Manager,o=myorganization,c=fr
-
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by dn.base="cn=Manager,o=myorganization,c=fr" write
by * none
次に、これらの変更を次のようにロードします。
ldapmodify -Y EXTERNAL -H ldapi:/// -f mychanges.ldif
これは、次のolcAccess
行が構成にすでに存在しているため機能します。
dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * none
この助成金はroot
、連絡をslapd
上ldapi:///
にソケット、パスワードなしのアクセスcn=config
ツリー。
次に、最上位のエントリを読み込みます。
dn: o=myorganization, c=fr
objectclass: organization
o: myorganization
実行すると:
ldapadd -Y EXTERNAL -H ldapi:/// -f myobject.ldif
これは、このデータベースに同様のACLを追加したため機能します。c=fr
データベースが保持するように定義されているため、ここから始める必要はなかったことに注意してください。o=myorganization,c=fr