Срочная проблема! Зависает slapd при загрузке

Обсуждение технических вопросов по продуктам Novell под Linux, а также *nix систем

Срочная проблема! Зависает slapd при загрузке

Сообщение Игорь Вершинин » 13 фев 2007, 19:15

Ставим новый сервер на Fedora Core 6. Подняли LDAP (OpenLDAP 2.3.27-4), стоит Samba (3.0.24). Сделали все как обычно. Прописали в pam, nss и т.п.
Если сделать запись в файле nsswitch.conf

hosts files dns ldap

то система при старте наглухо зависает. Т.е. в момент начального старта после перезагрузки. Slapd (сервер ldap) пытается сам себя резолвить, а еще не запущен. Как обойти эту проблему?
Как только убираем запись "ldap" все нормально. Но тогда в Самбе клиенты не могут прилогинится, так как поиск имен хостов не может пройти в LDAP, а именно там и хранятся записи для компьютеров.

В логах самба пишет:

не могу найти Unix-account для машины такой-то.

На Fedore 3 все работало "на ура". Конфиги перенесли "один в один". Я понимаю, что библиотеки какие-то обновились, появились новые ключи, затыкающие старые дыры. Но вот какие?

Очень срочно нужна помощь, четыре дня уже бъемся. :)
Аватара пользователя
Игорь Вершинин
 
Сообщения: 387
Зарегистрирован: 05 июн 2002, 20:34
Откуда: Волгоград

Re: Срочная проблема! Зависает slapd при загрузке

Сообщение Константин Ошмян » 13 фев 2007, 20:54

Игорь Вершинин писал(а):Если сделать запись в файле nsswitch.conf

hosts files dns ldap

то система при старте наглухо зависает. Т.е. в момент начального старта после перезагрузки. Slapd (сервер ldap) пытается сам себя резолвить, а еще не запущен. Как обойти эту проблему?
Глупый вопрос: а резолвить-то он сам себя пытается, используя порядок, заданный в том же самом nsswitch.conf? Так там первым провайдером имён указан files - может, ему (т.е. серверу ldap) самого себя в /etc/hosts указать надо?

Кстати, а почему этот slapd нормально стартует при неуказании ldap в nsswitch.conf? В этом случае он себя что - уже не ищет? Или вдруг каким-то загадочным образом находит? Или же при поиске сразу получает ошибку ("не нашли") и этим удовлетворяется? Так тогда тем более надо сделать так, чтобы находил (в /etc/hosts или в DNS).
Аватара пользователя
Константин Ошмян
 
Сообщения: 972
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Сообщение Игорь Вершинин » 13 фев 2007, 23:05

Ситуация какая-то дурацкая. Нашел я причину глубинного зависания - в файле /etc/ldap.conf надо было закомментировать строку:

nss_base_hosts ou=Hosts,dc=...........

Все заработало. Зависы исчезли.
Самба по-прежнему не работает. Авторизация через LDAP работает великолепно. И сквид это хорошо умеет, и почта. Все через один каталог. В самбе происходит следущее. Где-то при уровне лога 2-3 становится видно, что авторизация пользователя проходит успешно при попытке включить станцию в домен через мастер виндовый. Более того, отрабатывается скрипт smbldap-useradd -w .... Появляется какой-то пользователь в контексте компов. Затем винда ругается что Не Найдено Имя Пользователя, долго думая перед этим. На рабочем сервере (где у нас третья федора и какая-то древняя самба - 3.0.12, кажется) все это происходит быстро.
Сравнивали генерируемый лог - меньше раза в пол-тора с удачным финалом. При уровне логирования 5 получаем файл около 200 кб, где толком ничего не понятно, но какие-то ошибки прослеживаются. На более низких уровнях все заканчивается как-то тихо, но также неудачно.
Самба работает в режиме PDC (security = user) со всеми "yes" какими только возможно.

Ошибка, заставляющая задуматься, звучит так:

failed to create a new user structure: NT_STATUS_NO_SUCH_USER

хотя до этого вызывается скрипт smbldap-useradd -w .... и возвращает код 0, что говорит об успешном создании пользователя (но только он создается как простой posixAccount, без объекта Самбы, почему-то).

Есть еще такая ругачка:

secrets_fetch_trusted_domain_password(340) secrets_fetch failed!

Потом в какой-то момент времени идет проверка на наличие у объекта рабочей станции sambaSAMAccount и все. Этого нет, дальше вылетаем. Через какое-то время. Потому как снова вызываем скрипт smbldap-useradd -w ... и сначала все. Только скрипт возвращает уже ошибку 9 - т.е. объект присутствует в дереве LDAP.

И есть еще надпись в самом конце лога, что:

timeout_processing: End of file from client (client has disconnected)

Кстати, там еще есть какие-то упоминания про гостей, имена nobody (uid=99) и группу nobody (gid=99). Это что такое? Пользователь у меня такой создан в LDAP. Но не помогает.


Как мне помочь-то? Настройки уже полностью "копейка в копейку" перерисовали с работающего сервера, не помогло. Правда, Самба на новом 3.0.24, а на старом 3.0.12. Что-то все-таки, видимо, в ней поменялось, но вот что?

Есть у кого-нибудь пример работающего на свежей Самбе конфига. Нужен сервер - одинокий главный контроллер домена. ЛДАП валяется на другом сервере, но это не принципиально, переносили на этот - тоже не работает, хотя это и было понятно.... но просто перенесли, чтобы хоть что-то делать. :)
Аватара пользователя
Игорь Вершинин
 
Сообщения: 387
Зарегистрирован: 05 июн 2002, 20:34
Откуда: Волгоград

Сообщение Игорь Вершинин » 14 фев 2007, 14:31

Давайте поставим вопрос по-другому. С какими настройками можно запустить Самбу 3.0.24 (из поставки Федоры 6) с прикрученным ЛДАП?

Блин, перезапускал за несколько лет уже больше сотни серверов самых различных, а тут .... :(

В сети находится около 20 машин с WinXPsp2, сервер Win2k3r2 как просто станция (на нем SQL Server и Terminal Server), штук 15 терминалов с загрузкой по PXE, два сервера с Fedora Core 3 и 5 - первый бывший PDC и файловая свалка + LDAP, второй гейт в Инет со Сквидом и авторизацией через LDAP на первом сервере. При инсталляции нового сервера домен прозвали также как старый, но SID у него новый. На новом сервере создали новое дерево ЛДАП куда смигрировали всех юзеров с заменой у них SID (выгрузка в тектовый файл, замена подстроки, загрузка - 5 минут). Для связки Самбы и ЛДАП используется набор скриптов из поставки самой Самбы - smbldap-tools. Т.е. ничего стороннего. Утилитой smbldap-populate были созданы все необходимые атрибуты в чистом ЛДАПе.
Новый сервер подключился в сеть "наживую" вечером после работы. OS level = 255, у старого было 200. Затем на старом погасили Самбу.
К новому по сети доступ есть. Т.е. человек вводит свой логин и пароль и входит туда.
Как контроллер домена работать новый не хочет, хотя сконфигурен под этот случай.

Вот мой конфиг Самбы:

# Global parameters
[global]
security = domain
workgroup = AILANT
server string = Srv-base (%v)
netbios name = srv-base
domain master = Yes
preferred master = Yes
time server = Yes
password server = srv-base
local master = Yes
wins support = Yes
os level = 100
hosts allow = 192.168.10.
enable privileges = yes

name resolve order = wins bcast hosts

domain logons = yes
encrypt passwords = true
lanman auth = No
ntlm auth = yes
client ntlmv2 auth = yes
client plaintext auth = no
client lanman auth = no

printcap name = cups
cups options = raw
printing = cups
printcap cache time = 750

logon script = "%g.bat"
logon path = \\%L\profiles\%U
logon drive = R:
template shell = /bin/false

map to guest = Bad User
username map = /etc/samba/smbusers
admin users = admin,@"Domain Admins"

winbind use default domain = yes
winbind enum users = Yes
winbind enum groups = Yes

map acl inherit = Yes
profile acls = Yes
unix charset = utf8
dos charset = 866

passdb backend = ldapsam:ldap://localhost
ldapsam:trusted=yes
ldapsam:editposix=yes
ldap ssl = no
ldap admin dn = "cn=ldapadmin,dc=ailant,dc=com,dc=ru"
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Users
# ldap machine suffix = ou=Computers
ldap suffix = dc=ailant,dc=com,dc=ru
ldap delete dn = Yes
ldap passwd sync = Yes

idmap backend = ldapsam:ldap://localhost
ldap idmap suffix = ou=Idmap
idmap uid = 10000-20000
idmap gid = 10000-20000

add user script = /usr/sbin/smbldap-useradd -m "%u"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
set primary group script = /usr/sbin/smbldap-groupmod -g "%g"

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
max log size = 100000
log file = /var/log/samba/%m.log
log level = 1
syslog = 0

Аватара пользователя
Игорь Вершинин
 
Сообщения: 387
Зарегистрирован: 05 июн 2002, 20:34
Откуда: Волгоград

Сообщение Radik » 14 фев 2007, 15:55

Подобный случай был у нас, когда запускался slapd под пользователем slapd, пришлось изменить стартовый скрипт для него, чтоб он заускался от пользователя root.
Radik
 
Сообщения: 86
Зарегистрирован: 06 сен 2005, 13:37
Откуда: Kishinev

Сообщение Dimerson » 14 фев 2007, 17:02

Игорь Вершинин писал(а):Давайте поставим вопрос по-другому. С какими настройками можно запустить Самбу 3.0.24 (из поставки Федоры 6) с прикрученным ЛДАП?

Блин, перезапускал за несколько лет уже больше сотни серверов самых различных, а тут .... :(

В сети находится около 20 машин с WinXPsp2, сервер Win2k3r2 как просто станция (на нем SQL Server и Terminal Server), штук 15 терминалов с загрузкой по PXE, два сервера с Fedora Core 3 и 5 - первый бывший PDC и файловая свалка + LDAP, второй гейт в Инет со Сквидом и авторизацией через LDAP на первом сервере. При инсталляции нового сервера домен прозвали также как старый, но SID у него новый. На новом сервере создали новое дерево ЛДАП куда смигрировали всех юзеров с заменой у них SID (выгрузка в тектовый файл, замена подстроки, загрузка - 5 минут). Для связки Самбы и ЛДАП используется набор скриптов из поставки самой Самбы - smbldap-tools. Т.е. ничего стороннего. Утилитой smbldap-populate были созданы все необходимые атрибуты в чистом ЛДАПе.
Новый сервер подключился в сеть "наживую" вечером после работы. OS level = 255, у старого было 200. Затем на старом погасили Самбу.
К новому по сети доступ есть. Т.е. человек вводит свой логин и пароль и входит туда.
Как контроллер домена работать новый не хочет, хотя сконфигурен под этот случай.

Вот мой конфиг Самбы:

# Global parameters
[global]
security = domain
workgroup = AILANT
server string = Srv-base (%v)
netbios name = srv-base
domain master = Yes
preferred master = Yes
time server = Yes
password server = srv-base
local master = Yes
wins support = Yes
os level = 100
hosts allow = 192.168.10.
enable privileges = yes

name resolve order = wins bcast hosts

domain logons = yes
encrypt passwords = true
lanman auth = No
ntlm auth = yes
client ntlmv2 auth = yes
client plaintext auth = no
client lanman auth = no

printcap name = cups
cups options = raw
printing = cups
printcap cache time = 750

logon script = "%g.bat"
logon path = \\%L\profiles\%U
logon drive = R:
template shell = /bin/false

map to guest = Bad User
username map = /etc/samba/smbusers
admin users = admin,@"Domain Admins"

winbind use default domain = yes
winbind enum users = Yes
winbind enum groups = Yes

map acl inherit = Yes
profile acls = Yes
unix charset = utf8
dos charset = 866

passdb backend = ldapsam:ldap://localhost
ldapsam:trusted=yes
ldapsam:editposix=yes
ldap ssl = no
ldap admin dn = "cn=ldapadmin,dc=ailant,dc=com,dc=ru"
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Users
# ldap machine suffix = ou=Computers
ldap suffix = dc=ailant,dc=com,dc=ru
ldap delete dn = Yes
ldap passwd sync = Yes

idmap backend = ldapsam:ldap://localhost
ldap idmap suffix = ou=Idmap
idmap uid = 10000-20000
idmap gid = 10000-20000

add user script = /usr/sbin/smbldap-useradd -m "%u"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
set primary group script = /usr/sbin/smbldap-groupmod -g "%g"

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
max log size = 100000
log file = /var/log/samba/%m.log
log level = 1
syslog = 0



в таких слкчаях я бы привел так же конфиги :
/etc/ldap.conf
/etc/nssldap.conf (если он отдельный - это зависит от дистрибута)
/etc/smbldap/smbldap.conf (где он там у вас лежит - это зависит от дистрибута)
и /etc/slapd/slapd.conf
ну и /etc/nsswitch.conf
и наверное /etc/nscd.conf

Я если честно делал весьма плотно перекраивая все по рекомендациям собаководов с samba.idealx.org (то есть машины в отдельном контейнере + всякие аккаунты и прокси юзеры живут в отдельном контейнере так же).

Опять же начиная с версии 3.0.23 - я когда на нее переехал обнаружил что поменялась схема (надоть поменять samba.schema + сделать slapindex без запуска slapd) + нужен доп индекс.

опять же я вот зяглянул в свой nsswitch.conf и обнаружил что там примерно так:

то есть hosts никаким боком не в ldap - самба сама с ними разбирается.

passwd: files ldap
group: files ldap
shadow: files ldap


hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis
Аватара пользователя
Dimerson
 
Сообщения: 2749
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Михаил Григорьев » 15 фев 2007, 10:11

Игорь Вершинин писал(а):Ошибка, заставляющая задуматься, звучит так:
failed to create a new user structure: NT_STATUS_NO_SUCH_USER


Думаю все дело в скриптах IDEALX

Попробуйте разделить контексты пользователей и компьютеров и создать предварительно уч. запись нужного компьютера в LDAP ручками (ОБЯЗАТЕЛЬНО с НУЛЕВЫМ паролем)

и потом попробуйте включить этот комп в домен, все должно прокатить нормально
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1461
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение Dimerson » 15 фев 2007, 10:42

Григорьев Михаил писал(а):
Игорь Вершинин писал(а):Ошибка, заставляющая задуматься, звучит так:
failed to create a new user structure: NT_STATUS_NO_SUCH_USER


Думаю все дело в скриптах IDEALX

Попробуйте разделить контексты пользователей и компьютеров и создать предварительно уч. запись нужного компьютера в LDAP ручками (ОБЯЗАТЕЛЬНО с НУЛЕВЫМ паролем)

и потом попробуйте включить этот комп в домен, все должно прокатить нормально


Кстати - для создания записи компьютера надо иметь соответствующую привилегию (чтобы не делать это из под доменного админа - у нас саппортеры имеют оные).
Аватара пользователя
Dimerson
 
Сообщения: 2749
Зарегистрирован: 15 сен 2002, 14:39
Откуда: Регион 70

Сообщение Михаил Григорьев » 15 фев 2007, 11:40

Dimerson писал(а):Кстати - для создания записи компьютера надо иметь соответствующую привилегию (чтобы не делать это из под доменного админа - у нас саппортеры имеют оные).


Есть такое :-) Мона дать права юзеру на добавление компов в домен так:
net -S 127.0.0.1 -U MYDOMAIN\\root rpc rights grant 'MYDOMAIN\USERNAME' SeMachineAccountPrivilege
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1461
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск


Вернуться в *nix

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron