LINUX.ORG.RU
решено ФорумAdmin

Модификация динамического конфига LDAP


1

1

Предисловие: хочу опробовать динамический конфиг, потому как «LDAP свойственно обрубать старые хвосты и возможно скоро статический slapd.conf в новых версиях просто не будет поддерживатся» (c) откуда-то_с_просторов_интернета. Да и просто для опыта, думаю, пригодится.

Не пойму, как мне отредактировать содержимое /etc/ldap/slapd.d. В самих файлах ldif прописано, что

AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

Составил файлик ldif для добавления аттрибутов:

dn: cn=config
olcLogFile: /var/log/slapd.log

Применяю:

# slapadd -l ~/add.ldif -b cn=config -F /etc/ldap/slapd.d -v
slapadd: dn="cn=config" (line=1): no objectClass attribute
_#################### 100.00% eta   none elapsed            none fast!         
Closing DB...

# ldapadd -f ~/add.ldif -D cn=config
ldap_bind: Server is unwilling to perform (53)
	additional info: unauthenticated bind (DN with no password) disallowed

# ldapadd -f ~/add.ldif -D cn=config -W
Enter LDAP Password: 
ldap_bind: Invalid credentials (49)

# ldapadd -f ~/add.ldif -D cn=admin,dc=mydomain,dc=local -W
Enter LDAP Password: 
adding new entry "cn=config"
ldap_add: Insufficient access (50)

# 
Дело в том, что при настройке LDAP я задавал пароль только на cn=admin,dc=mydomain,dc=local, только его я и знаю. А под каким пользователем добавлять настройки в конфиг? Под «cn=config» без пароля запрещает, а пароля вроде как и нет.

Прочитал кучу манов, пишу сюда просто чуя тупик моей соображалки..

Зачем slapadd? Динамический конфиг же подразумевает, что slapd у тебя уже запущен.

Deleted ()
Ответ на: комментарий от Deleted
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=config"
ldap_add: Object class violation (65)
	additional info: no objectClass attribute

У меня подозрение, что я не правильно ldif-файл составил.

Составлял по манам. Первой строкой должна идти запись, куда добавлять (здесь cn=config), а последующими строками - атрибуты. Есть замечания по файлу или дело в другом?

abr_linux ()
Ответ на: комментарий от Deleted

Всё, спасибо за помощ! Я оттолкнулся от первой команды и сделал:

# cat ~/add.ldif 
dn: cn=config
changetype: modify
add: olcLogFile
olcLogFile: /var/log/slapd.log
-
replace: olcLogLevel
olcLogLevel: 1
-

# ldapmodify -Y EXTERNAL -D cn=config -H ldapi:/// -f ~/add.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

# cat /etc/ldap/slapd.d/cn\=config.ldif 
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 6f445135
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: 79abba9e-8b79-1031-8dc7-ef3dff4c34fb
creatorsName: cn=config
createTimestamp: 20120905074558Z
olcLogFile: /var/log/slapd.log
olcLogLevel: 1
entryCSN: 20121122110739.596727Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20121122110739Z

То биш, прокатило

abr_linux ()

Аффоторы OpenLDAP похоже легких путей не ищут, если раньше можно было просто подправить конфиг, то теперь нужно юзать какие-то шаманские процедуры.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

По сути, работа с конфигом теперь схожа с работой с самим каталогом. А то, что ето вначале тяжело даётся для понимания - тут не спорю..

abr_linux ()
Ответ на: комментарий от abr_linux

в принципе работа с динамических каталогом несложна, но очень неудобно модифицировать схему, если нет ldif, а есть только старый вариант конфигурации.

Atlant ★★★★★ ()
Ответ на: комментарий от Atlant

Да, есть такое. Я тоже сначала думал, что можно при помощи того же ldapadd добавить атрибут в стиле «ldapadd -b dc=example,dc=local -D dn=config 'olcLogFile: /var/log/slapd.log'». Ан нет.. Может, допилят когда-нть

abr_linux ()
28 декабря 2012 г.

cat >> /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif << EOF olcRootPW: {SSHA}... EOF

Пользователь прописан в атрибуте olcRootDN в olcDatabase={0}config.ldif

anonymous ()
6 июля 2013 г.

Ну дык эта - ManageDSaIT флаг поставь в настройки соединения

Да и правду он сказал тебе в первом случае - objectclass указать надо, хотя бы structural. Только вот ветку cn=config я так и не научился на лету менять. Глушу сервак - правлю slapd.d и перезапускаю %(((

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.