我希望一些 PAM/LDAP 专家可以在这里帮助我。我最近在 Ubuntu Server 上设置了一个 LDAP 目录来保存我的客户(用于基于 Web 的系统)和员工(需要通过 SSH 登录)的帐户。
LDAP 身份验证运行良好。但是,我无法使帐户限制起作用:员工帐户将具有介于2001
和之间的 ID,2999
并且将成为该ssh-users
组的成员,以允许他们登录服务器。
有问题的限制在/etc/ldap.conf
,并且是pam_min_uid
,pam_max_uid
和pam_groupdn
。
pam_groupdn
ssh-users
包含我组 的完整 DN 。pam_min_uid
=2000
和pam_max_uid
= 2999
。
现在,我设法通过添加使它们工作:
account [success=1 default=ignore] pam_ldap.so
中的pam_unix.so
线以上/etc/pam.d/common-account
。但是,本地 Unix 帐户无法登录:SSH 服务器一尝试就终止连接。
我已经在上面的文件中设置了pam_ldap.so
模块sufficient
,但是无效的用户会收到一条消息,说他们无法登录,但无论如何它都会记录他们。
那么,如何为 LDAP 用户设置这些帐户限制,同时仍然允许 UNIX 用户登录?
您可能会猜到我是 PAM 的新手,尽管我已经设法让“自动创建主目录”模块工作:-)
非常感谢,安迪
PAM 能够根据访问控制列表(至少在 Ubuntu 上)来限制访问,就像 kubanskamac 的回答 (+1) 一样,将组视为 posix 组,无论它们是存储在 LDAP 中
/etc/group
还是 NIS 中。/etc/security/access.conf
是访问列表文件。在我的文件中,我放在最后:这会拒绝除 root、sysadmin 和 ssh-users 组(在 LDAP 中)之外的所有人,无论他们从哪里登录(第二个
ALL
)。然后在我的 PAM 帐户文件(这是一个帐户模块)中,我在最后添加:
它告诉 PAM 使用这个文件。这是一种享受:-)
我会简单地使用
仅允许特定组(本地组和 LDAP 组)。这样您就不必在
ldap.conf
.如果您想以自己的方式保持授权,则不应在“帐户”通行证上过滤用户。我相信您应该在“auth”通行证上进行。其次,如您所见,pam_unix 同时处理本地和 LDAP 帐户(至少在“帐户”通道上),因此似乎根本不需要 pam_ldap。
编辑:第三,如果您坚持在“帐户”通行证上有东西(我相信这可能会产生奇怪的副作用),您的序列应该以:...、“足够的 pam_ldap”、“需要的 pam_localuser”、“需要的 pam_unix”结尾. 我的意思是,如果您有任何其他模块,请将它们移到 pam_ldap 之前 - 否则由于“足够”条款,LDAP 帐户将忽略它们。
只是添加到@andy-shellam,这是我的
common-account
文件: