Я реализую Kerberos с OpenLDAP вручную и в соответствии с Документация MIT, Я должен вручную установить этот ACL:
access to dn.base=""
by * read
access to dn.base="cn=Subschema"
by * read
# Provide access to the realm container.
access to dn.subtree= "cn=EXAMPLE.COM,cn=krbcontainer,dc=example,dc=com"
by dn.exact="cn=kdc-service,dc=example,dc=com" write
by dn.exact="cn=adm-service,dc=example,dc=com" write
by * none
# Provide access to principals, if not underneath the realm container.
access to dn.subtree= "ou=users,dc=example,dc=com"
by dn.exact="cn=kdc-service,dc=example,dc=com" write
by dn.exact="cn=adm-service,dc=example,dc=com" write
by * none
access to *
by * read
Согласно тому, что я прочитал, я должен установить это в slapd.conf.
Я думаю, что Suse не использует slapd.conf, поэтому я выясняю, как мне добавить эти записи. Я полностью застрял.
Кто-нибудь может мне помочь?
Огромное спасибо.
Последние версии OpenLDAP используют сам протокол LDAP для поддержания своей конфигурации. Все содержится в cn = поддерево конфигурации в базе данных под названием olcDatabase={0}config,cn=config
. Доступ к этой базе данных обычно предоставляется локальному пользователю. корень на автомате.
Чтобы изменить конфигурацию, вам нужно сначала найти имя вашей основной базы данных:
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config '(objectClass=olcDatabaseConfig)'
где метод SASL EXTERNAL проверяет uid и gid пользователя, выполняющего команду (так что вы должны быть корень).
Как только вы нашли имя своей базы данных (скажем, dn: olcDatabase={1}mdb,cn=config
) вам нужно создать файл (скажем, authz.ldif
) в формате LDIF:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: to dn.base=""
by * read
olcAccess: to dn.base="cn=Subschema"
by * read
olcAccess: to dn.subtree= "cn=EXAMPLE.COM,cn=krbcontainer,dc=example,dc=com"
by dn.exact="cn=kdc-service,dc=example,dc=com" write
by dn.exact="cn=adm-service,dc=example,dc=com" write
by * none
olcAccess: to dn.subtree= "ou=users,dc=example,dc=com"
by dn.exact="cn=kdc-service,dc=example,dc=com" write
by dn.exact="cn=adm-service,dc=example,dc=com" write
by * none
olcAccess: to *
by * read
Это заменит все ваши предыдущие olcAccess
атрибуты с новыми. Затем вам нужно отправить обновление на сервер OpenLDAP:
ldapmodify -Y EXTERNAL -H ldapi:/// -f authz.ldif
Примечание: на вашем сервере LDAP вы обычно хотите получить доступ к серверу через URI ldapi:///
(т.е. сокет UNIX), поэтому вы можете добавить:
URI ldapi:///
на ваш ldap.conf
файл (man 5 ldap.conf
), который имеет разные пути в разных дистрибутивах. Например. в Debian это в /etc/ldap/ldap.conf
.