我使用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
答案 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