Пользователь в passdb, но getpwnam () не работает! - PullRequest
0 голосов
/ 19 июня 2010

Попытка настроить Samba + OpenLDAP с помощью nss_ldap.

После присоединения Windows7 к автономному PDC Samba я не могу войти с учетной записью домена, если эта учетная запись также не добавлена ​​в файл / etc / passwd.

Я получаю: пользователь в passdb, но getpwnam () не работает!

Все, что я прочитал, указывает на проблему NSS_LDAP, getent passwd отлично показывает пользователей, и я могу подключиться к ssh на тот же хост Linux, используя учетную запись пользователя, которая есть только в базе данных LDAP.

Кроме того, если я открою файл / etc / passwd и добавлю строку для пользователя, о котором идет речь, я смогу войти в систему.

Я не использую PAM. Я добавил два обновления реестра Windows7, необходимые для сайта Samba.org.

Программный стек выглядит следующим образом: Самба 3.5.3 OpenLDAP 2.4.21 nss_ldap 264

Мысли / предложения

--------------------------------- ОБНОВЛЕНИЕ ------------- --------------------

Все ближе! В моем nsswitch.conf были файлы ldap, поэтому я изменил порядок (теперь файлы ldap), и случилось нечто странное. Заметьте, раньше я говорил, что могу войти через SSH и getent passwd выгрузил пользователей как в ldap, так и в файлах. После внесения изменений в nsswitch.conf, ldap перед файлами, простые команды, такие как ls, заняли много времени. Кроме того, я заметил следующие ошибки nss_ldap:

ls: nss_ldap: не удалось найти сервер LDAP - сервер недоступен

и

ls: nss_ldap: не удалось привязаться к серверу LDAP ldap: //tsrvr.example.corp: неверные учетные данные

Я прокомментировал строку rootbinddn в ldap.conf, и эти ошибки исчезли, и getent passwd немедленно снова начал работать. Изменился и порядок вывода: записи ldap перечислены перед записями файлов.

Тем не менее, мой клиент Windows7 не будет входить в домен, и я продолжаю получать то же сообщение об ошибке Samba

Пользовательский тест в passdb, но getpwnam () не проходит!

В моем файле smb.conf я попытался удалить строку ldapsam: trust = yes, и при этом я получаю ошибки аутентификации домена.

Я не использую SSL / TLS с OpenLDAP, и у меня есть SSL = нет настройки. У меня также есть набор файлов ldap.secret. Я запускаю slapd под учетной записью root. Мой rootbinddn, прежде чем комментировать, ссылался на root-пользователя LDAP: uid = root, ou = Users, dc = example, dc = corp. userPassword пользователя root с использованием CRYPT соответствует bindpw, а также указанному в /etc/shadow.

Глядя на активность журнала LDAP, когда я получаю ошибку Samba, кажется, что LDAP возвращает правильный результат по запросу Samba:

19 июня 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 база SRCH = "dc = пример, dc = corp" scope = 2 deref = 0 filter = "(& (uid = test) (объектный = sambaSamAccount))» 19 июня 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 SRCH attr = uid uidNumber gidNumber homeDirectory sambaPwdLastSet sambaPwdCanChange sambaPwdMustChange sambaLogonTime sambaLogoffTime sambaKickoffTime cn sn displayName sambaHomeDrive sambaHomePath sambaLogonScript sambaProfilePath описание sambaUserWorkstations sambaSID sambaPrimaryGroupSID sambaLMPassword sam baNTPassword sambaDomainName objectClass sambaAcctFlags sambaMungedDial sambaBadPasswordCount sambaBadPasswordTime sambaPasswordHistory modifyTimestamp sambaLogonHours modifyTimestam p uidNumber gidNumber homeDirectory loginShell gecos 19 июня 14:20:14 tsrvr slapd [3803]: conn = 1025 op = 15 тэг РЕЗУЛЬТАТ ПОИСКА = 101 err = 0 nentries = 1 текст =

Любые другие предложения?

Очень ценится

Ответы [ 2 ]

2 голосов
/ 19 июня 2010

Звучит как проблема с /etc/nsswitch.conf. В частности, строки passwd и group должны ссылаться на ldap перед сжатием или файлом Вы смотрели на эту Samba wiki запись ?

0 голосов
/ 28 июня 2010

решаемые !!!!!!!!!!!

У меня есть скрипт, который запускал Samba (NMBD, SMBD), а также OpenLDAP (SLAPD). Это RC-скрипт, который считывает данные конфигурации из файла, чтобы определить, помимо прочего, какие процессы уже запущены или не удалось запустить зависимый процесс и т. Д. Вот фрагмент соответствующей части в скрипте. В последней строке копируется версия файла nsswitch.conf, в которой указано использование поиска LDAP.

while [ $i -lt $MAXPROCS ];
  do
   PID=${PROC[$i]}
   StartProc $PID

   if test $? != 0; then
    echo "!!! Aborting Any Remaining Start-up Processes !!!"
    exit 1
   fi

  i=$(($i+1))
done

 cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf

И после выключения я делал следующее; обратите внимание, я копирую файл nsswitch.conf, в котором есть записи "noldap".

while [ $i -lt $MAXPROCS ];
do
  PID=${PROC[$i]}
  StopProc $PID
  i=$(($i+1))
done

cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf

Оказывается, в сценарии запуска samba хочет, чтобы в содержимом nsswtich.conf были записи ldap до вызова. Вот что я сделал, чтобы исправить свои проблемы:

cp /etc/rc.d/pozix/nsswitch.conf.ldap /etc/nsswitch.conf

while [ $i -lt $MAXPROCS ];
  do
   PID=${PROC[$i]}
   StartProc $PID

   if test $? != 0; then
    cp /etc/rc.d/pozix/nsswitch.conf.noldap /etc/nsswitch.conf
    echo "!!! Aborting Any Remaining Start-up Processes !!!"
    exit 1
   fi

  i=$(($i+1))
done

Таким образом, представляется, что способ запуска SMBD так же важен, как и при его запуске. Если вы запускаете SMBD, когда nsswitch.conf не имеет записей LDAP, вы получаете версию smbd, работающую с nss_ldap.so, полагая, что она должна полагаться только на / etc / passwd (если это все, что находится в файле nsswitch.conf) и изменение содержимого nsswitch.conf после запуска SMBD не имеет никакого эффекта.

Надеюсь, это поможет другим сборщикам систем ...

...