Я пытаюсь добавить новую схему на свой сервер OpenLDAP. Версия slapd - 2.4.23. Я использую Debian 6.
Если я хорошо понял, slapd 2.4+ по умолчанию использует конфигурацию OLC с (cn = config) для этой версии, и мне не нужно ничего изменять в slapd.conf или в какой-либо другой точке в дереве cn = config (я ошибаюсь ?). Но когда я пытаюсь добавить схему с помощью следующей команды:
ldapadd -x -D "cn=admin,cn=config" -W -f filesystem.ldif
это дает мне:
Enter LDAP Password:
ldap_bind: Invalid credentials (49)
Я тоже пробовал эту команду (даже если не знаю, что делаю здесь):
ldapadd -x -D "cn=admin,dc=linuxcbt,dc=internal" -W -f filesystem.ldif
где dc = linuxcbt, dc = internal - моя база, я получаю:
adding new entry "cn=filesystem,cn=schema,cn=config"
ldap_add: Insufficient access (50)
Мой файл filesystem.ldif:
dn: cn=filesystem,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: filesystem
olcAttributeTypes: ( 1000.1.1.1 NAME ( 'fn' 'filename' )
DESC 'Nome del file'
EQUALITY 'Case exact match'
SUBSTR caseExactSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: ( 1000.1.1.2 NAME ( 'fs' 'filesize' )
DESC 'Dimensione del file'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
olcObjectClasses: ( 1000.1.2.1 NAME ( 'dir'
DESC 'Una directory'
MUST fn
MAY fs
AUXILIARY )
olcObjectClasses: ( 1000.1.2.2 NAME ( 'file'
DESC 'Un file'
MUST (fn $ fs)
AUXILIARY )
Теперь я застрял в этом.
Пытаться
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f filesystem.ldif
Это будет работать, только если вы работаете как root (uid = 0) или через sudo и напрямую на сервере LDAP. Он подключается к серверу LDAP на основе идентификатора пользователя и обходит обычные методы аутентификации.
Этот доступ предоставляется olcAccess
правило
{0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
в olcDatabase={0}config,cn=config
.
Чтобы разрешить доступ "обычным" способом, вы можете добавить следующие строки в olcDatabase={0}config,cn=config
:
olcRootDN: cn=admin,cn=config
olcRootPW: <yourpassword>
где <yourpassword>
должны быть предварительно зашифрованы с помощью slappasswd
.