主机的 LDAP 身份验证:同一用户在登录不同的机器(主机)时应该具有不同的 posixgroup 成员资格

主机的 LDAP 身份验证:同一用户在登录不同的机器(主机)时应该具有不同的 posixgroup 成员资格

关于如何使用带有 unix 客户端的 openLDAP 服务器实现以下目标的任何想法

目标:a) 每个用户应通过 LDAP 服务器设置对不同主机(unix 服务器)具有单独的访问限制 b) 每个登录用户(如果允许)应根据 LDAP 服务器设置在不同的计算机上具有单独的 posixgroup 成员资格。例如,用户 janaki 应是 server-1 中的 sudo posixgroup 成员,但不是在 server-2 中的 sudo posixgroup 成员

它能够实现以下部分的目标:

使用 LDAP 覆盖(memberof 和 refint)为需要对用户进行单独访问限制的每台计算机/主机创建具有成员属性的单独组(objectClass groupofNames)。在 LDAP 服务器中将用户(posixAccount)添加到这些组(类型 groupofnames)以启用对每台服务器的身份验证访问。在客户端计算机(unix 服务器)中添加 nss_base_passwd 过滤器以测试 memberof=cn=group-name(group-name 在 LDAP 中代表此服务器)。此操作成功并且正常运行。

需要的是如何实现 b 部分?也就是说,在 openldap 服务器和 unix-clients 中需要哪些配置才能实现这一点?

—问候 Janaki

答案1

您可以在 LDAP 中使用对象类 posixGroup。此对象类允许您创建与每台客户端计算机上的 Unix 组相对应的组。然后,您可以使用 memberUid 属性将用户添加到这些组中,该属性指定用户的 UID。在客户端计算机上,您可以配置 /etc/ldap.conf 文件中的 nss_base_group 过滤器以从 LDAP 服务器检索 posixGroup 对象。这允许客户端计算机使用来自 LDAP 服务器的组成员身份信息来确定用户登录时的 Unix 组成员身份。我可能建议的另一件事是使用 pam_ldap 模块对用户进行身份验证,并根据用户登录时的 LDAP 服务器设置设置他们的组成员身份。

编辑1(查看注释以获取参考):是的,您可以使用 posixGroup 对象类和 nss_base_group 过滤器来实现在不同的客户端计算机上为不同的用户提供不同的 Unix 组成员身份的目标。

为此,您可以在 LDAP 服务器中为要在客户端计算机上使用的每个组创建 posixGroup 对象。然后,您可以使用 memberUid 属性指定每个组成员用户的 UID。

在客户端计算机上,您可以配置 /etc/ldap.conf 文件中的 nss_base_group 过滤器,以从 LDAP 服务器检索 posixGroup 对象。例如,您可以在客户端计算机上的 /etc/ldap.conf 文件中添加以下行:

nss_base_group  ou=Groups,dc=example,dc=com?one

这将导致客户端计算机在 LDAP 服务器中的 Groups OU 中搜索 posixGroup 对象,并使用这些对象中的信息在用户登录时设置 Unix 组成员身份。

至于使用 pam_ldap 模块在用户登录时根据 LDAP 服务器设置对用户进行身份验证并设置其组成员身份,这是可以做到的。pam_ldap 模块可以配置为使用 LDAP 服务器在用户登录到客户端计算机时对用户进行身份验证并设置其组成员身份。

要使用 pam_ldap 模块,您可以将以下行添加到客户端计算机上的 /etc/pam.d/common-auth 文件:

auth sufficient pam_ldap.so

这将导致 pam_ldap 模块使用 LDAP 服务器对用户进行身份验证,并根据 LDAP 服务器中的信息设置他们的组成员身份。

相关内容