При изменении конфигурации 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', которое ему не принадлежит, и вместо того, чтобы сказать мне "здесь нельзя использовать 'UID'" он все время повторял: «slapd: line 0: ожидая, что 'access' получил [мой 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
или другое зависит от вашей установки.
Обычно это происходит, когда вы копируете и вставляете с веб-страниц.
Я разобрался с такой проблемой, следуя инструкциям, упомянутым @Mildred, а также использовал :set ff=unix
в редакторе Vim, чтобы игнорировать плохие форматы