内容 mod_acl.ldif

内容 mod_acl.ldif

使用以下命令修改 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

答案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

答案2

请记住,当您的 olcAccess 语句有其他语法问题时,也会抛出此错误。例如,我在其中一个“by”子句中使用了一个不属于那里的关键字,而不是告诉我“您不能在这里使用‘UID’”它一直说“slapd:第 0 行:期望‘access’得到 [my DN]”。这个错误很晦涩难懂。

答案3

您需要创建这个文件 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其他安装而改变。

答案4

这通常发生在您从网页复制和粘贴时。

我按照 @Mildred 提到的说明解决了这个问题,并且我:set ff=unix在 Vim 编辑器中使用它来忽略任何错误的格式

相关内容