it-консалтинг и аутсорсинг
что мы делаем контакты блог

Проблема с OpenLDAP в Mac OS X 10.5 Server

Кирилл Воронин 06.10.2010


Не заслуживающий особого внимания пост про устаревшее ПО. Просто подумалось, зачем писать его во внутри-конторском форуме; вдруг эта информация пригодится кому-то для починки своего сервера.


Для начала, рекламная пауза – переходите на Mac OS X 10.6 Server (вы сможете обновлять клиентов Mac OS X 10.6 c вашего сервера, удаленные пользователи смогут сами менять свои пароли через веб-интерфейс, wiki и iCal сервер будут лучше, NetRestore, Address Book Server).

Итак, Mac OS X 10.5 Server. При аварийном перезапуске сервера не стартует LDAP. Вы замечаете это молниеносно – пользователи не могут подключиться ни к одной службе, требующей аутентификации.

Ну-с, tail /var/log/system.log

Oct 6 09:17:17 admpr-xserve14 com.apple.launchd[1] (org.openldap.slapd[169]): Exited with exit code: 1

Oct 6 09:17:25 admpr-xserve14 com.apple.launchd[1] (org.openldap.slapd[204]): Exited with exit code: 1

Oct 6 09:17:25 admpr-xserve14 com.apple.launchd[1] (org.openldap.slapd): Throttling respawn: Will start in 2 seconds

Ага, не стартует slapd.
Почему он не стартует?
А ну-те-ка, tail -f /var/log/slapd.log

Oct 6 09:17:10 admpr-xserve14 slapd[169]: bdb(dc=admpr,dc=kremlin,dc=private): PANIC: Invalid argument
Oct 6 09:17:10 admpr-xserve14 slapd[169]: bdb(dc=admpr,dc=kremlin,dc=private): PANIC: fatal region error detected; run recovery
Oct 6 09:17:18: — last message repeated 37 times —
Oct 6 09:17:16 admpr-xserve14 slapd[169]: bdb_db_open: Database cannot be recovered, err -30978. Restore from backup!

Давайте-ка остановим запуск slapd – чего ему бедному стараться.

launchctl unload -w /System/Library/LaunchDaemons/org.openldap.slapd.plist

Посмотрим, что там, у нас в /var/db/openldap/openldap-data.
Эвона, куча Berkeley DB файлов, DB_CONFIG, какие-то файл alock.
Что это такое?
Можно было бы погуглить и найти что-то вроде alock File Keeps LDAP (slapd) from Starting Up.

Но вообще само название файла должно было подтолкнуть к
mv alock alock.Softwareproblemen

Запустим ldap

launchctl load -w /System/Library/LaunchDaemons/org.openldap.slapd.plist

Убедимся, что все работает
tail /var/log/slapd.log
ps aux | grep slapd
tail /var/log/system.log

Так, появились ли наши дорогие?
dscl /LDAPv3/127.0.0.1  list /Users

Ну и для очистки совести
/usr/libexec/chkpasswd vsurkov

/* Кстати, в 10.6 с такой проблемой не сталкивался ни разу (очевидно, потому что в 10.6 slapd 2.4.11, а в 10.5 slapd 2.3.27) */

  • Александр

    Кирилл, привет!
    Спасибо за заметку, занятно. Но про устаревшее ПО, как мне кажется, ты немного залихвацки так написал. Во первых, сервер все-таки не айтюнс какой-нибудь, штука консервативная. Многие производственники еще на 10.4 успешно сидят. Опять же деньги, железо… Во-вторых в 10.5 ошибочки более-менее только к 10.5.6 поправили, строить работу на ранэраундах по собственной воле тоже желающих немного… Но это так, лирика. Еще раз спасибо!

  • Прочитал статью, закончив разбираться с невозможностью модифицировать сайты через Server Admin (в моём случае причина оказалась в описании одного из 30 сайтов в конфигурации web в plist)… И когда читал, убедился, что без серьёзных знаний в Unix в Mac OS X Server не обойтись.

  • maksemuz

    Я в подобных случаях выполняю заготовленный скрипт (сервер 10.5.8):

    /usr/sbin/slapconfig -stopldapserver
    /usr/sbin/slapadd -c -l /Volumes/ldap_bk/backup.ldif
    db_recover -h /var/db/openldap/openldap-data/
    /usr/sbin/slapindex
    /usr/sbin/slapconfig -startldapserver

    Прочитав пост, начал подозревать в себе паникера…