以下を使用してOpen-LDAP構成を変更する場合:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by * none
エラーが発生します:
ldap_modify: Other (e.g., implementation specific) error (80)
additional info: <olcAccess> handler exited with 1
これは、ldifファイルの行の継続により最初のスペースが削除され、属性は次のように見なされるためです:{0}to *by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" writeby * none
(これは無効です)
したがって、行の継続の前に余分なスペースを入れます:
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" write
by * none
このエラーは、olcAccessステートメントに他の構文の問題がある場合にもスローされることに注意してください。たとえば、自分の 'by'句の1つで、それに属さないキーワードを使用したのではなく、"ここでは 'UID'は使用できません"「slapd:行0: 'access'が[my DN]を持っていることを期待しています。」このことのエラーは鈍いです。
このファイルmod_acl.ldifは、次の内容で正確な形式で作成する必要があります。次のコマンドを使用します。
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f mod_acl.ldif
期待される結果は次のとおりです。
modifying entry "olcDatabase={1}mdb,cn=config"
dn: olcDatabase={1}mdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey
by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write
by * none
-
add: olcAccess
olcAccess: to dn.base=""
by * read
-
add: olcAccess
olcAccess: to *
by dn="cn=admin,dc=example,dc=com" write
by * read
Ldapデータベースのタイプは、実装に応じてmdb
、hdb
など、インストールに応じて変化する可能性があることに注意してください。
これは通常、Webページからコピーして貼り付けると発生します。
@Mildredの指示に従って、このような問題を解決し、:set ff=unix
Vimエディターで不正な形式を無視する