LINUX.ORG.RU
ФорумAdmin

[2DRVTiny] LDAP и привязка демонов к аккаунтам пользователей


0

1

Предположим такую ситуацию: имеется некая учётная запись в централизованном LDAP-каталоге. Имеется сервер, на котором работает некий демон, который должен запускаться от имени этой учётной записи или как-то её использовать. При этом демон не позволяет указывать числовой UID/GID, а только имя. Более конкретный пример: smbd и учётка гостевого аккаунта (guest account в smb.conf). Проблема: если LDAP-сервер на момент запуска демона не доступен (нет сети, сервер лежит и т.п.), то демон не сможет определить UID по имени, вывалит ошибку в лог и не стартанёт. После того, как LDAP станет доступен, демона приходится передёргивать руками, что есть страшный костыль.

Возможные варианты решения проблемы, которые мне пришли в голову:

  • Передергивать демона по крону. Говнокостыль.
  • Написать патч. Но тут не понятно, что именно нужно патчить (какой вариант более правильный):
    • Демона на предмет понимания числовых идентификаторов пользователей и групп, чтобы при запуске NSS/LDAP не требовался.
    • Запилить поддержку персистентного кеша в «поставщика» NSS (в моём случае - nss-pam-ldapd).

Вопрос: что делать в такой ситуации?

Deleted

Вопрос: что делать в такой ситуации?

1. Запускать демона от имени локального пользователя
2. Обеспечить доступность учетки в ldap (не достал с этого сервера? посмотри на том!)
3. Сделать кеширование.

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

1. Запускать демона от имени локального пользователя

Не вариант.

2. Обеспечить доступность учетки в ldap (не достал с этого сервера? посмотри на том!)

Технически невозможно.

3. Сделать кеширование.

То есть вариант 2.2 из моего поста?

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

Подними на хосте с самбой локальный LDAP-сервер, реплицирующийся в режиме Slave с основным (на основном при этом не требуется ничего менять), и будешь всегда иметь локальную копию базы, автоматически поддерживаемую в актуальном состоянии. Как минимум проблему с «недоступностью LDAP-сервера» ты победишь.

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

Разумный совет. Но ничего менять на основном не придется, если там используется (openldap 2.3/2.4) и активен (собран с и включен в конфиге) syncrepl

zgen ★★★★★
()

Запилить поддержку персистентного кеша в «поставщика» NSS

Который называется NSCD, да.

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

Который называется NSCD, да.

Почему то заставить его нормально работать с nss+ldap+samba я не смог - глюк на глюке - выпилил нафиг.

zgen ★★★★★
()
Ответ на: комментарий от no-dashi

Который называется NSCD, да.

Глючный он...

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

Разумный совет. Но ничего менять на основном не придется, если там используется (openldap 2.3/2.4) и активен (собран с и включен в конфиге) syncrepl

То есть предлагаете на каждый «проблемный» сервер ставить OpenLDAP с копией основного каталога? А это не будет оверкиллом?

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

Это будет типовое решение для построения распределенной отказоустойчивой схемы :)

То есть если у меня допустим 1 мастер-сервер LDAP и 10 samba-серверов, то ставить OpenLDAP с репликацией на все 10 серверов - нормальное решение?

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

в samba4 есть свой встроенный ldap сервер с блек-джеком и шлюхами, так что это нормальное решение

Ладно, забудем про самбу. Есть ещё libvirtd. Мне нужно, чтобы он сокет создавал с группой из LDAP'а. Проблема та же. Тоже ставить ещё один OpenLDAP-сервер,

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

гм... правда вот трабл, самба то сама не запустится...

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

вот с этого момента хотелось бы узнать по-подробнее, если не сложно...

Всё просто: мне нужно сделать сервера максимально автономными. Допустим есть два сервера в одной сети: сервер с slapd и сервер с smbd. Я отсоединяю их от свича, включаю, жду полной загрузки. Потом подключаю к свичу и... пффффф! smbd насрал в лог и завершил работу ещё до подключения к сети. Мне нужно избежать вот такой вот проблемы.

Держать на каждом сервере свой slapd - это тоже костыль.

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

нафига, если он есть у самбы?

У третьей самбы нет встроенного LDAP-сервера. И у libvirtd тоже нет. И у стопицот других программ с той же проблемой его тоже нет.

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

Кеш на мой взгляд всё же больший костыль, правда в Windows оно достаточно успешно используется... да и вариант со слейвом на каждом хосте это и правда уж совсем перебор.

А почему бы не сделать чтобы smbd стартовал только после подключения к сети? Зачем нужна такая «полная загрузка»?..

Но резервный LDAP сервер всё равно нужен.

ei-grad ★★★★★
()

После того, как LDAP станет доступен, демона приходится передёргивать

Если у тебя настолько сильно все завязано на LDAP, будь добр обеспечить его резервирование и доступность. Если неспособен, в крайнем случае, каким-нибудь скриптом кэшируй такие учетки в /etc/{groups|passwd}

no-dashi ★★★★★
()
Ответ на: комментарий от Deleted

то ставить OpenLDAP с репликацией на все 10 серверов - нормальное решение?

если это контроллеры домена - абсолютно нормально.

zgen ★★★★★
()
Ответ на: комментарий от ei-grad

Тупой и абсолютно нерасширяемый. Заточенный исключительно под структуру AD.

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

Всё просто: мне нужно сделать сервера максимально автономными.

Всё еще проще - автономные сервера не могут брать критически важные для работы сервисов учетки хз откуда, иначе о какой автономности вы говорите.

На мой взгляд, тут типичная ошибка планирования. Или избыточность (она же доступность), или автономность. Не обязательно ставить локальный ldap сервер, но обязательно обеспечить доступность, раз критически важная учетка должна быть доступна 100% времени.

Конфиг smbd и кусок логов с проблемой приведите. И nss_ldap - тоже или что там у вас..




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