无法将 ldap 组添加到系统本地用户

无法将 ldap 组添加到系统本地用户

我有一台包含用户和组的 ldap 服务器。
另外,还有另一台服务器使用第一台服务器作为帐户。
来自 ldap 的用户可以登录第二台服务器。
我可以在 ldap 中为用户添加组。

我尝试将一个组(该组仅存在于 ldap 中)添加到第二台服务器中的系统用户,但没有成功。 可以吗?

谢谢 !

答案1

我已经搜索了同一问题的答案(如您所见)。

我的结论是,您不能将 LDAP 组分配给仅本地存在的用户。

这是两个世界: - 要么用户(及其组)是本地的 - 或者不是,即所有内容都存储在目录中。

例如:如果用户已经有一个本地主要组,而您尝试为该用户添加次要组,会发生什么情况?通常,该组将存储在 /etc/group 中,但在这种情况下,它必须修改目录,而这可能做不到。

所以我认为这是行不通的。

答案2

根据我自己的调查,如果你已经nsswitch.conf设置了所有正常的 PAM / 管道,你ldapmodify执行此操作,但只能通过直接使用 LDAP 服务器上的属性将本地用户添加到 LDAP 数据库中的组memberUid(请参阅这里):

$ ldapmodify -D <admin DN> -h <ldaphost> -W
password: [enter password]
dn: cn=vipb,ou=groups,dc=example,dc=com
changetype: modify
add: memberUid
memberUid: fred

^D

请注意空白行必要的。

接下来,您必须使服务器 2 上的 NCSD 缓存无效:

$ nscd --invalidate=group

然后,您可以通过执行以下操作来检查服务器 2 上的组成员身份:

$ id -nG fred

警告:使用 LDAP 作为用户数据库依赖于本标准草案中详述的模式:rfc2307bis-02。目前该标准有三个版本。在各个版本之间进行调整的内容包括 member 和 memberUid 属性;这意味着您的 LDAP 设置可能无法正常运行。完全符合 bis-02 的安装应该包含并支持两个属性:(memberUid对于 LDAP 组的本地登录成员,没有 DN)和member(对于具有完整 DN 的 LDAP 用户)在给定组中。它们还应允许其中一个或两个为空,从而允许空组。您的里程可能会有所不同 - 您需要检查服务器的架构。

像 webmin 这样的工具对于操作 LDAP 用户和组以及 LDAP 数据库很有用;但它们可能无法与 rfc2307bis-02 很好地兼容。例如,Webmin 的 LDAP 用户和组模块处理 memberUid,但不处理 member。

事情变得真正模糊的地方是memberof支持。一些系统(例如早期的 ownCloud)依靠memberof支持来确定用户属于哪些组,而无需查询 LDAP 数据库两次。通常memberof只对其中一个属性有效,而且只有在大量调整 LDAP 配置后才有效。

答案3

在 RHEL 中,您可以通过参数执行此ldap_rfc2307_fallback_to_local_users操作

但是,身份验证操作和身份工具(例如id)需要通过 SSSD,而为 SSSD 配置的 LDAP 身份提供程序中没有本地用户的记录。SSSD 可以通过两种方式处理本地用户:

  • 它可以从本地文件中删除用户,passwd就好像它是已删除的本地帐户的残余一样。

  • passwd如果在 LDAP 中找不到某个组中的用户,它可以查询本地用户列表 ( ) 作为后备,然后将该用户添加到其缓存中,就好像它是 LDAP 用户一样。

此行为在身份提供者域的参数中配置ldap_rfc2307_fallback_to_local_users。默认情况下,此行为为 false,这意味着仅识别 LDAP 提供者中存在的用户,如果将本地用户添加到 LDAP 组,则会删除该用户。可以将此行为设置为 true,如果在 LDAP 目录中找不到 LDAP 组成员,则会查询本地系统用户作为后备。

相关内容