Авторы оригинала статьи — Alex Aminoff & Daniel Feenberg.

Работая с 9 и 10 операционной системой Solaris возникало множество проблем со сбором и установкой PADL’s nss_ldap и pam_ldap, привязанных к клиентской библиотеке OpenLDAPlinked ( скачанной с sunfreeware.com). Но, учитывая большое количество постов от людей с жалобами на её работу, мы в конечном итоге нашли решение. Ниже мы составили отчёт о нашем прогрессе.

Проблема возникает тогда, когда распаковываются оба файла nss_ldap-262 и pam_ldap-184, в случае, если вы пытаетесь пройти по пути /usr/local/lib (то место, где файлы, скачанные с sunfreeware.com, хранятся по умолчанию).

Редактор связей Solaris  /usr/ccs/bin/ld, по умолчанию распаковывает двоичные системы ELF в библиотеке программ этапа исполнения дорожки, которая не содержит /usr/local/lib.  План, не поддерживающий дополнительных функциональных возможностей ./configure of nss_ldap таким образом провалится.

Очевидное решение, которое можно принять это добавить некоторые опции к ./configure:

./configure LDFLAGS=»-L/usr/local/lib -R/usr/local/lib»

(для этого будут нужны сразу и  -R и -L, как в Building Software on the Solaris OS,  секция “Соединение с библиотекой”).

Теперь конфигурация заработает, но рекомпиляция будет барахлить. Если вы посмотрите на неправильную команду, вы можете обратить внимание на то, что кажется, что она вызывает линкер, но без LDFLAGS. Это похоже на баг в Makefile.in, источником которого служит nss_ldap. Сравнивая 228 строчку Makefile.in с самой первой линией, которая даёт линию команд для использования GNU линкера, вы можете увидеть, что в конце 228 строчки отсутствует часть «$(LDFLAGS)».

Пофиксить это можно, редактируя Makefile.in. Более замысловатой опцией может быть изменение Makefile.in с целью передачи этих флагов линкеру относительно распаковки в Solaris, но не будучи знатоком autoconf, я этого не делаю. Не передача LDFLAGS линкеру кажется понятной, но бессмысленной.

Как это случается, кто-то еще зарепортил это как баг в PADL bugzilla: вы можете увидеть мои аргументы насчёт разницы между двумя версиями в этом баг отчёте You can see my submission (очевидно представленном в ldap-266).

pam_ldap  проблемы облачного аккаунта

pam_ldap в 9 Solaris спрашивает об облачном аккаунте (shadowAccount), ниже инструкция о том, как его установить.

pam_ldap, скомпилированный для Solaris 9  по той же схеме, что и nss_ldap above, требует объектов в датабазе LDAP ( путь objectClass=shadowAccount). Стандартные средства перехода к новой версии PADL не создают никаких объектов, если вы загружаете их из источника файлов NIS.

Облачный аккаунт отличается от posixAccount только тем, что он включает пароль подтверждения возраста. К счастью, все поля, относящиеся к возрастному паролю, не обязательны к заполнению. Для того, чтобы пофиксить, нужно добавить:

nss_map_objectclass shadowAccount posixAccount

to ldap.conf.

Также есть вариант включить objectClass=shadowAccount в графу каждого пользователя, но так как pam_ldap работает на FreeBSD и Linux без этого, кажется логичнее сделать маппинг только для Solaris.

Техническое оборудование и приложения, привязанные к библиотекам в /usr/lib

Порядок, в котором Sun пре-компилирует двоичные системы технического оборудования и приложений, таких как  top, ps, и т.д., что выглядит в /lib and /usr/lib для предыдущей библиотеки /usr/local/lib. Или возможно /usr/local/lib i не находится в этих  utils’ дорожках для поиска библиотек в целом. Так что, если мы хотим использовать эти инструменты в версии OpenDLAP в библиотеке клиента ldap вместо Sun’s, мы должны заменить Sun’s линки на следующие:

cd /usr/lib

mv libldap.so.5 libldap.so.5.DIST ; ln -s /usr/local/lib/libldap.so libldap.so.5

cd /lib

ln -s /usr/local/lib/libldap-2.4.so.2

ln -s /usr/local/lib/liblber.so

ln -s /usr/local/lib/liblber-2.4.so.2

ln -s /usr/local/lib/libgcc_s.so.1

Отправка почты и ssh

Функция отправки почты, которая идёт вместе с Solaris 10 привязана к клиентской библиотеке Sun’s ldap client напрямую, и это удобнее, чем идти через nsswitch. Итак, это не заработает, заметите вы или нет библиотеку с похожими линками. Решением является отказ от использования функции отправки почты Sun’s. Переустановить или удалить ей и компилировать отправку почты из источника и затем установить, либо установить что-то более маленькое, на подобие femail  в случае, если вам нужны функции только лишь отправки почты и полный MTA, где бы вы ни были.

Мы можем не получить версию ssh от Sun’s для того. Чтобы она корректно работала с pam_ldap. К тому же эта специфическая проблем, относящаяся к LDAP не ясна. Мы рекомендуем переустановить openssh.

Техническое оборудование, приложения, nscd

С Solaris 9 и 10 мы заметили, что многие приложения и техническое оборудование, загруженные с OS с использованием интерфейса getgroupbyname() не работают при использовании nss_ldap для вызова клиента библиотек Openldap’s ldap. Это включает lp, lpr, автомонтирование файлов и вход в систему. Признаки следующие:

— uids отображаются, без имён пользователей, при работе таких программ, как  ls, top и ps

— syslog sees сообщение выглядит как:

Sep  9 10:16:29 nber6 top[435]: [ID 293258 user.warning] libsldap: Status:

2 Mesg: Unable to load configuration ‘/var/ldap/ldap_client_file’ (»).

Кажется, что отключение nscd позволит этим программам работать. В системе solaris 10’s FMRI это

svcadm disable svc:/system/name-service-cache:default

Возможно nscd как-то статично прикреплен к версии Sun’s в клиентской библиотеке версии ldap?