Linux ldap 認證,pam_filter 被忽略
我已經通過 ldap 設置了 linux 客戶端身份驗證,它可以工作。我想通過為帳戶添加或刪除不同的 OU 來控制使用者對多個服務的訪問。例如,如果允許使用者登錄 linux 機器,則必須包含“linux”。如果這個使用者被允許訪問,比如說,redmine,你也必須包含“redmine”。
問題是,/etc/ldap.conf 中的 pam_filter 參數被忽略了。當我設置它
pam_filter ou=linux
ldap 伺服器的搜尋字元串不包含此過濾器:
openldap 拍打
$$ 5374 $$: conn=1857 op=1 SRCH base=“ou=people,dc=rwth-cbmb,dc=de” scope=2 deref=0 filter="(objectClass=posixAccount)"
正如我所說,我一直將它與 redmine(票務跟踪系統)一起使用,我也設置了 ldap 過濾器並且它可以工作。我在伺服器上收到以下搜尋請求:
openldap 拍打
$$ 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 伺服器 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_check_host_attr
指定是否應檢查“主機”屬性的登錄授權(PAM 堆棧中的“帳戶”)。預設為不。如果設置為“yes”並且使用者沒有“host”屬性的值,則使用者將無法登錄。