Linux AD 用户只能使用它的主要组吗?

Linux AD user can use only it's Primary group?

最近我们将 Linux 服务器绑定到 AD 域。 我们现在可以进行简单的操作了,如下:

  1. 使用 AD 帐户(也通过 SSH)登录到我们的 Linux 服务器
  2. 使用 id 命令列出并识别我们的 AD 组
  3. 创建文件、取得这些文件的所有权以及其他简单操作
  4. 在涉及我们的 AD 用户和组的 Linux 服务器上创建 ACL

但是,我们的用户似乎无法访问其主要组以外的组。

我们尝试过的步骤

假设名为 foo 的 AD 用户是 "group_A@domain.dom"、"group_B@domain.dom" AD 组的成员,并且 group_A 定义为 primary 组. 我们预计用户 foo 将能够访问 group_A 或 group_B 拥有的文件,但我们发现用户 foo 无法访问分配给 [=] 拥有(或具有权限)的文件=47=].

因此,我们的用户是很多广告组的成员,但只有主要组是有效的,可以让我们的用户访问 Linux 服务器中的文件。这种现象似乎发生在我们所有的环境中

我们可以做些什么来让我们的 AD 用户通过他们所属的所有组获得访问权限,而不仅仅是他们的主要组?

技术信息

我们正在使用 Rhel7 Linux 服务器,我们使用 realm 工具将其加入 windows 域。我们没有给我们的用户一个 POSIX 属性,并且有一个自动 ID 映射

嗯....似乎用户试图访问的一些文件在 NFSv4 共享上。

当使用带 sys 身份验证挂载选项的 NFS 共享时,NFS 服务器“信任”第一个 16 个组,而不是由域解析[这是“16 个组”问题 - NFS 中的常见问题,因为该协议早在 rfc5531 ].

中就出现了

因此,NFS 服务器将第 16 个用户的 gid 与分配给该用户尝试访问的文件的 gid 进行比较。

但是,如果用户是具有大量嵌套的域用户 组,Linux 服务器并不总是以相同的顺序解析它们。因此,无法确保某些组将成为前 16 个用户组之一(因此将适用于 NFS 服务器条款),除非它是用户的主要组!

绕过的方法:

  1. 将身份验证 NFS 方法更改为类似 Kerberos 的方法
  2. 关闭 Kerberos linux 客户端中的嵌套组支持 [在我们的例子中是 sssd] 并确保权限是通过用户的 1 组嵌套级别完成的
  3. 在域级别为每个用户维护 unix 属性

我们做了什么?

由于我们的 NFS 服务器是 ONTAP 虚拟服务器,我们可以关闭 16 个组的限制。但是,当您在 ONTAP 中执行此操作时,vserver 不再自动支持前 16 个组 - 它会尝试通过名称服务解析所有组 (LDAP/local ontap user/groups)。

但是,netapp LDAP 客户端是 'stupid' - 它不能做 sssd 能做的事情。因此,ONTAP LDAP 客户端(在 nsswitch 命令中定义)正在执行 'pure' LDAP。当它尝试翻译 group/user 时,它正在尝试搜索为 Active Directory 中的 user/group 分配的 LDAP Unix 属性。我已经向 NetApp 询问过这个问题...由于名称服务不可用,SSSD 客户端的开发

我的建议?

您必须达到 Linux 服务器的 Unix LDAP 客户端和 NetApp VServer 按相同逻辑运行的状态。

让 Linux 客户端通过 Pure LDAP 工作,并为您需要的组维护 unix 属性

为特定组创建本地 PASSWD ontap 文件

完成