pam_unix.so之前的pam_ldap.so? 有没有可能?

我们有一些PAM + LDAP的服务器。

configuration是标准的(请参阅http://arthurdejong.org/nss-pamldapd/setup或http://wiki.debian.org/LDAP/PAM )。 例如,/etc/pam.d/common-auth包含:

auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so 

当然,它适用于ldap和本地用户。 但是,每个login首先到达pam_unix.so,失败,然后才成功尝试pam_ldap.so。 因此,我们对每个ldap用户login都有一个众所周知的失败消息:

 pam_unix(<some_service>:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<some_host> user=<some_user> 

我每天有多达60000个这样的日志消息,我想要更改configuration,所以PAM将首先尝试ldap身份validation,并且只有在它失败时 – 尝试pam_unix.so(我认为它可以提高I / O性能服务器)。 但是,如果我将common-auth更改为以下内容:

 auth sufficient pam_ldap.so use_first_pass auth sufficient pam_unix.so nullok_secure auth required pam_deny.so 

然后,我不能再用本地(非LDAP)用户(例如,通过SSH)login。

有人知道正确的configuration吗? 为什么Debian和nss-pam-ldapd默认首先有pam_unix.so? 有没有办法改变它?

先谢谢你。

PS我不想禁用日志,但想要首先设置LDAP身份validation。

hayalci在评论中回答:

 auth sufficient pam_ldap.so auth sufficient pam_unix.so nullok_secure try_first_pass auth required pam_deny.so 

如果本地和networking用户在不同的uid范围(这是一个好主意),你可以添加一个这样的线(假设本地用户的范围是0-4999):

 auth [success=1 default=ignore] pam_succeed_if.so uid >= 5000 quiet 

pam_unix.so行之前。 如果uid> = 4999,它将传递1行。它将直接转到pam_ldap.so。

如果在pam_ldap.so之前没有要求密码的行,则必须将pam_ldap.so use_first_pass更改为pam_ldap.sopam_ldap.so try_first_pass

我会testing:

 auth [success=1 default=ignore] pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_ldap.so auth required pam_deny.so 

你的:

 auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so 

更改为:(use_first_pass表示使用前一个模块的密码,即pam_ldap.so)

 auth sufficient pam_ldap.so auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_unix.so use_first_pass nullok_secure auth required pam_deny.so 

缺点(对于hpux):如果您的ldap服务器挂起(同步攻击,请参阅https://fedorahosted.org/389/ticket/47554 ),您的客户端也将挂起,这发生在HPUX服务器(不是Linux和aix; hpux进程命名为ldapclientd)。 这意味着所有login(即使是来自ILO / MP的root)都被阻止。 解决方法是重启服务器:-(所以我更喜欢pam_ldix之前hpux上的pam_ldap

我想说这个解决scheme为我工作! 我使用free-ipa时遇到了同样的问题,在我的/etc/pam.d/system-auth文件中使用这个设置避免了额外的“身份validation失败”错误:

 auth required pam_env.so auth sufficient pam_sss.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so