使用LDAP和PAM限制帐户login

我希望有一些PAM / LDAP大师能够帮助我。 我最近在Ubuntu服务器上设置了一个LDAP目录,为我的客户端(用于基于Web的系统)和员工(需要通过SSHlogin)保存帐户。

LDAPauthentication工作正常。 然而,我无法获得帐户限制的工作:员工帐户将有20012999之间的ID,将成为ssh-users组的成员,以允许他们login到服务器。

有关的限制在/etc/ldap.conf ,分别是pam_min_uidpam_max_uidpam_groupdn

pam_groupdn包含我的ssh-users组的完整DN。 pam_min_uid = 2000pam_max_uid = 2999

现在,我已经设法通过添加:

 account [success=1 default=ignore] pam_ldap.so 

/etc/pam.d/common-accountpam_unix.so行之上。 但是,本地Unix帐户可以不login:SSH服务器尽快终止连接。

我已经在上面的文件中设置了sufficientpam_ldap.so模块,但是那么无效的用户会收到一条消息说他们无法login,但是无论如何都会logging它们。

那么,我怎样才能为LDAP用户设置这些帐户限制,同时仍然允许UNIX用户login?

正如你可以猜到我是PAM的新手,虽然我设法得到“自动使主目录”模块工作:-)

非常感谢,安迪

    PAM有能力限制基于访问控制列表(至less在Ubuntu上)的访问权限,就像kubanskamac的回答(+1)将组视为posix组,它们是否存储在LDAP, /etc/group或NIS中。

    /etc/security/access.conf是访问列表文件。 在我的文件中,我最后说到:

     -:ALL EXCEPT root sysadmin (ssh-users):ALL 

    这会拒绝除根,系统pipe理员和组ssh-users(在LDAP中)无论他们从何处login(第二个ALL )的ALL

    然后在我的PAM帐户文件(这是一个帐户模块),我最后添加:

     account required pam_access.so 

    告诉PAM使用这个文件。 它的工作原理:-)

    我会简单地使用

     auth required pam_listfile.so sense=accept item=group file=/etc/groups.allow onerr=fail 

    只允许特定的组(包括本地和LDAP组)。 这样你就不必在ldap.conf指定任何东西。

    如果你想保持授权的方式,你不应该过滤用户的“帐户”通行证。 我相信你应该在“auth”通行证上做。 其次,正如你所看到的,pam_unix同时处理本地和LDAP帐户(至less在“帐户”过程中),所以看起来完全不需要pam_ldap。

    编辑:第三,如果你坚持有“帐户”通过(我认为可能有奇怪的副作用)的东西,你的序列应该结束:…,“足够的pam_ldap”,“所需的pam_localuser”,“所需的pam_unix” 。 我的意思是,如果您有其他模块,请在pam_ldap之前移动它们,否则由于“sufficient”子句,LDAP帐户将被忽略。

    只需添加@ andy-shellam,以下是我的common-account文件:

     account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_access.so account required pam_permit.so