Назад | Перейти на главную страницу

Linux ldap-аутентификация, pam_filter игнорируется

Я настроил аутентификацию клиента linux через ldap, он работает. Я хочу контролировать доступ пользователей к нескольким службам, добавляя или удаляя разные подразделения для учетных записей. Например, если пользователю разрешено входить в систему с Linux-машинами, он должен содержать "linux". Если этому пользователю разрешен доступ, скажем, к redmine, он также должен содержать «redmine».

Проблема в том, что параметр pam_filter в /etc/ldap.conf игнорируется. Когда я установил это

pam_filter ou=linux

строка поиска, которая приходит на сервер ldap, не содержит этого фильтра:

openldap slapd [5374]: conn = 1857 op = 1 SRCH base = "ou = people, dc = rwth-cbmb, dc = de" scope = 2 deref = 0 filter = "(objectClass = posixAccount)"

Как я уже сказал, я использовал его с redmine (системой отслеживания билетов), где я также установил фильтр ldap, и он работает. Я получаю на сервере следующие поисковые запросы:

openldap slapd [5374]: conn = 1863 op = 1 SRCH base = "ou = people, dc = rwth-cbmb, dc = de" scope = 2 deref = 0 filter = "(& (objectClass = *) (uid = alex ) (ou = redmine)) "

У меня есть следующие версии пакетов:

ldap-auth-client 0.5.3

ldap-auth-config 0.5.3

ldap-utils 2.4.28-1.1ubuntu4.2

libldap-2.4-2 2.4.28-1.1ubuntu4.2

libnss-ldap 264-2.2ubuntu2

libpam-ldap 184-8.5ubuntu2

Клиент ubuntu 12.04, сервер ubuntu server 10.04.

Хорошо, решение заключалось в использовании

nss_base_passwd ou=people,dc=rwth-cbmb,dc=de??ou=linux

в /etc/ldap.conf на клиенте. Согласно документации:

Синтаксис:

nss_base_XXX base? scope? filter

Я не знаю, почему pam_filter не работает, но nss_ * решает проблему.

Добавьте следующую строку в файл /etc/pam_ldap.conf

pam_check_host_attr yes

Из страница руководства pam_ldap:

pam_check_host_attr

Указывает, следует ли проверять атрибут «host» для авторизации входа в систему («учетная запись» в стеке PAM). По умолчанию это не так. Если установлено «да» и пользователь не имеет значения для атрибута «host», то пользователь не сможет войти в систему.