我已经将系统设置为允许使用 LDAP 或本地密码登录。我通过向 PAM 添加“password adequate pam_ldap.so”并随后调用“pam_unix2.so”来实现此目的。
但是我想要求特定组用户仅通过 LDAP 进行身份验证,不允许 pam_unix2.so 的回退。有办法吗?
答案1
创建一个名为的组ldaponly
,并将所有仅使用 LDAP 的用户放入其中。然后,在 PAM 配置中使用pam_succeed_if
模块pam_unix2
当用户在组中时跳过该模块ldaponly
。
答案2
嗯...也许这太简单了,但是把用户放在 LDAP 中并且不要把他们放在本地密码文件中?
在我的环境中,只有 root 和服务/守护进程帐户位于本地密码文件中,并且只有用户登录帐户位于 LDAP 中 - 运行良好。
答案3
我之前在设置 LDAP 服务器时遇到过这种情况。
我能给出的最好建议是提供对我有用的方法。即 /etc/security/access.conf
只允许特定用户和组访问。
例如,access.conf
当尝试使用 127.0.0.1 环回接口本地登录时,这里有一个条目用于拒绝除 root 和属于 Group1 和 Group2 的用户之外的所有人访问:
- : ALL EXCEPT root Group1 Group2: 127.0.0.1
您可能还需要pam_access.so
在 PAM 文件中启用该模块。
答案4
我现在能想到的最简单的方法是将“仅 LDAP”用户的本地密码设置为完全奇怪的值,并且不告诉他们。但是,一旦他们登录,他们就可以更改密码(如果您的 PAM 设置允许他们这样做)。
一个更复杂的方法是编写自己的 PAM 插件(这显然并不难),它可以查找“仅 LDAP”列表,然后返回 true 或 false。然后可以在 PAM 配置文件中使用它来决定下一步,即允许登录或不允许登录。