Pam身份验证,首先尝试本地用户,然后尝试LDAP

时间:2017-12-15 18:16:28

标签: unix authentication ldap redhat pam

我使用nscd守护程序在RH5上建立了一个pam身份验证,以支持Oracle Unified Directory。

我希望身份验证首先尝试本地用户,然后如果找不到用户尝试联系LDAP。所以我用这种方式编辑了 /etc/nsswitch.conf

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

但似乎这不起作用,因为如果LDAP服务器关闭,我无法登录服务器。

我错过了什么吗?

编辑:

这是我的PAM /etc/pam.d/system-auth(我不使用sssd,只使用nscd)。

#%PAM-1.0
# This file is auto-generated.
auth      required      pam_env.so
auth      sufficient    pam_unix.so nullok
auth      sufficient    pam_ldap.so  use_first_pass ignore_authinfo_unavail
auth      required      pam_deny.so

account   required      pam_unix.so broken_shadow
account   required      pam_ldap.so ignore_unknown_user ignore_authinfo_unavail
account   required      pam_permit.so

password  requisite     pam_cracklib.so try_first_pass retry=3
password  sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password  required     pam_ldap.so try_first_pass ignore_unknown_user ignore_authinfo_unavail
password  required     pam_deny.so

session   optional      pam_keyinit.so revoke
session   required      pam_limits.so
session   optional      pam_mkhomedir.so skel=/etc/skel umask=077
session   [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session   required      pam_unix.so
session   optional      pam_ldap.so   ignore_authinfo_unavail

我在debug时设置了system-auth,这就是结果:

Dec 20 17:46:38 <hostname> nscd: nss_ldap: failed to bind to LDAP server ldap://<dns_1>:3389: Can't contact LDAP server
Dec 20 17:46:38 <hostname> nscd: nss_ldap: failed to bind to LDAP server ldap://<dns_2>:3389: Can't contact LDAP server
Dec 20 17:46:38 <hostname> nscd: nss_ldap: failed to bind to LDAP server ldap://<ip_1>:3389: Can't contact LDAP server
Dec 20 17:46:38 <hostname> nscd: nss_ldap: failed to bind to LDAP server ldap://<ip_2>:3389: Can't contact LDAP server

3 个答案:

答案 0 :(得分:1)

我发现了问题。

决议是在<?php echo $view['actions']->render(new ControllerReference('BlogBundle:Post:list', array('limit' => 2)), array('alt' => 'BlogBundle:Post:error')) ?>

中更改此行
/etc/pam.d/systhem-auth-ac

进入这个:

account   required      pam_unix.so broken_shadow

如果您有该文件,请务必更改account sufficient pam_unix.so broken_shadow 中的相同指令。现在通过/etc/pam.d/password-auth-ac的白名单应该可以正常工作。

答案 1 :(得分:0)

我还没有找到答案。它仍在尝试联系LDAP服务器,但我在nss_initgroups_ignoreusers中添加了/etc/ldap.conf指令。因此,对于在此指令中声明的用户,即使所有LDAP SERVICE都已关闭,您也可以登录到该计算机。

该指令仅在LDAP服务已关闭但机器已启动时才有效。运行因为它仍然需要绑定LDAP SERVER。

为了避免空闲超时,您必须将此指令idle_timelimit添加到/etc/ldap.conf,以便在ack知识失败时超时连接到LDAP SERVER。

无论如何,这是两个解决方法,而不是问题的解决方案。

答案 2 :(得分:0)

对于Debian上的任何人

diff /etc/pam.d/common-account ...
...
+account        [success=done new_authtok_reqd=done default=ignore]     pam_unix.so 
-account        [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so