我希望一些 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
Run Code Online (Sandbox Code Playgroud)
中的pam_unix.so线以上/etc/pam.d/common-account。但是,本地 Unix 帐户无法登录:SSH 服务器在尝试后立即终止连接。
我已经在上面的文件中设置了pam_ldap.so模块sufficient,但是无效的用户收到一条消息,说他们无法登录,但无论如何它都会登录。
那么,如何为 LDAP 用户设置这些帐户限制,同时仍然允许 UNIX 用户登录?
你可能猜到我是 PAM 的新手,尽管我已经设法让“自动创建主目录”模块正常工作:-)
非常感谢,安迪
And*_*lam 11
PAM 能够根据访问控制列表(至少在 Ubuntu 上)来限制访问,就像 kubanskamac 的答案 (+1) 将这些组视为 posix 组,无论它们存储在 LDAP/etc/group还是 NIS 中。
/etc/security/access.conf是访问列表文件。在我的文件中,我放在最后:
-:ALL EXCEPT root sysadmin (ssh-users):ALL
Run Code Online (Sandbox Code Playgroud)
这将拒绝除 root、sysadmin 和 ssh-users 组(在 LDAP 中)之外的所有人从(第二个ALL)登录的任何地方。
然后在我的 PAM 帐户文件(这是一个帐户模块)中,我在最后添加:
account required pam_access.so
Run Code Online (Sandbox Code Playgroud)
它告诉 PAM 使用这个文件。它是一种享受:-)
我会简单地使用
auth required pam_listfile.so sense=accept item=group file=/etc/groups.allow onerr=fail
Run Code Online (Sandbox Code Playgroud)
只允许特定组(本地和 LDAP 组)。这样您就不必在ldap.conf.
如果您想以自己的方式保持授权,则不应在“帐户”通行证上过滤用户。我相信您应该在“身份验证”通过时进行。其次,正如您自己看到的,pam_unix 处理本地和 LDAP 帐户(至少在“帐户”传递上),因此似乎根本不需要 pam_ldap。
编辑:第三,如果你坚持在“帐户”通行证上有东西(我认为这可能会产生奇怪的副作用),你的序列应该以:...,“足够的pam_ldap”,“需要的pam_localuser”,“需要的pam_unix”结束. 我的意思是,如果您有任何其他模块,请将它们移动到 pam_ldap 之前 - 否则由于“足够”子句,它们将被 LDAP 帐户忽略。
| 归档时间: |
|
| 查看次数: |
21392 次 |
| 最近记录: |