libpam_ldapd - pam_ldap(sshd:account): "Не удалось идентифицировать пользователя"

Я пытаюсь протестировать процедуру установки libpam_ldapd на виртуальной машине Ubuntu/Debian.

У меня отключены службы nscd / nslcd, и я наблюдаю вывод nslcd -d а также /var/log/auth.log,

Мои фильтры / карты, которые я установил в nslcd.conf работают правильно, я использую только ldap для паролей - то есть я хочу проверять пароли только тех учетных записей, которые уже существуют в системе, поэтому я использую только:

shadow files ldap в /etc/nsswitch.conf

Выход из nslcd -d говорит, что связывание работает нормально, но журнал авторизации утверждает:

sshd[]: pam_ldap(sshd:auth): username changed from rovangju to RovangJu
sshd[]: pam_unix(sshd:account): could not identify user (from getpwnam(RovangJu))
sshd[]: Failed password for rovangju from 127.0.0.1 port 44245 ssh2

Консоль, которая пытается войти по SSH, не получает никаких ошибок:

rovangju@vbox-u64:~$ ssh 0
rovangju@0's password: [enter correct password]
Connection closed by 127.0.0.1

Очевидно, что привязка использует cn / uid из свойства ldap, которое представляет собой имя пользователя с заглавными буквами, однако имена пользователей unix строчные. Кто-нибудь знает, как обойти это?

Ближайшая вещь, которую я нашел для этой проблемы, находится здесь: http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/445925-pam_ldap-username-case-sensitivity-opensuse-11-2-a.html

Заранее спасибо!

Изменить: Еще один кикер это: По какой-то причине я могу обмануть модуль, выполнив это:

rovangju@vbox-u64:~$ ssh 0
rovangju@0's password: [enter WRONG password]
Permission denied, please try again
rovangju@0's password: [enter CORRECT password]
[and bingo, I'm in]

1 ответ

Решение

Чтобы обойти проблему использования имени пользователя из ldap (в верхнем регистре), я закомментировал блок из исходного кода:

nss-pam-ldapd-0.xx/nslcd/pam.c: L120-125

/* check if the username is different and update it if needed */
/*if (strcmp(username,value)!=0)
{
  log_log(LOG_INFO,"username changed from \"%s\" to \"%s\"",username,value);
  strcpy(username,value);
}*/
Другие вопросы по тегам