web-dev-qa-db-ja.com

ldap_modify:その他の(例:実装固有の)エラー(80)、<olcAccess>ハンドラーが1で終了しました

以下を使用して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
8
Mildred

これは、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
14
Mildred

このエラーは、olcAccessステートメントに他の構文の問題がある場合にもスローされることに注意してください。たとえば、自分の 'by'句の1つで、それに属さないキーワードを使用したのではなく、"ここでは 'UID'は使用できません"「slapd:行0: 'access'が[my DN]を持っていることを期待しています。」このことのエラーは鈍いです。

1
joemadeus

このファイルmod_acl.ldifは、次の内容で正確な形式で作成する必要があります。次のコマンドを使用します。

ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f mod_acl.ldif

期待される結果は次のとおりです。

modifying entry "olcDatabase={1}mdb,cn=config"

コンテンツmod_acl.ldif

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データベースのタイプは、実装に応じてmdbhdbなど、インストールに応じて変化する可能性があることに注意してください。

これは通常、Webページからコピーして貼り付けると発生します。

@Mildredの指示に従って、このような問題を解決し、:set ff=unix Vimエディターで不正な形式を無視する

0