38.11. 使用 Ansible 为用户 ID 提供对 IdM 客户端上本地声卡的覆盖访问
您可以使用 ansible-freeipa
group
和 idoverrideuser
模块,使身份管理(IdM)或活动目录(AD)用户成员成为 IdM 客户端上本地 audio
组的成员。这授予 IdM 或 AD 用户对主机上声卡的特权访问。流程使用在第一个 playbook 任务中添加了 aduser@addomain.com ID 覆盖的 Default Trust View
ID 视图的示例。在下一个 playbook 任务中,在 IdM 中创建了一个 GID 为 63 的 audio 组,它对应 RHEL 主机上本地 audio
组的 GID。同时,aduser@addomain.com ID 覆盖作为成员添加到 IdM audio 组中。
先决条件
-
您有访问要在其上执行流程第一部分的 IdM 客户端的
root
访问权限。在示例中,这是 client.idm.example.com。 您已配置了 Ansible 控制节点以满足以下要求:
- 您使用 Ansible 版本 2.15 或更高版本。
-
您已在 Ansible 控制器上安装了
ansible-freeipa
软件包。 - 您正在使用 RHEL 9.4 或更高版本。
- 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个带有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了
ipaadmin_password
。
-
AD 林信任 IdM 。在示例中,AD 域的名称是 addomain.com,出现在本地
audio
组中的 AD 用户的完全限定域名(FQDN)是 aduser@addomain.com。 -
目标节点,也就是在其上执行
ansible-freeipa
模块的节点,是 IdM 域的一部分,作为 IdM 客户端、服务器或副本。
流程
在 client.idm.example.com 上,将
[SUCCESS=merge]
添加到/etc/nsswitch.conf
文件中:[...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
确定本地
audio
组的 GID:$ getent group audio --------------------- audio:x:63
在 Ansible 控制节点上,创建一个带有一个任务的 add-aduser-to-audio-group.yml playbook,来将 aduser@addomain.com 用户覆盖添加到 Default Trust View 中:
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false tasks: - name: Add aduser@addomain.com user to the Default Trust View ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: aduser@addomain.com
在同一 playbook 中使用另一个 playbook 任务,将
GID
为 63 的组 audio 添加到 IdM 中。将 aduser idoverrideuser 添加到组中:- name: Add the audio group with the aduser member and GID of 63 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio idoverrideuser: - aduser@addomain.com gidnumber: 63
- 保存该文件。
运行 Ansible playbook。指定 playbook 文件、存储保护 secret.yml 文件的密码,以及清单文件:
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
验证
以 AD 用户身份登录到 IdM 客户端:
$ ssh aduser@addomain.com@client.idm.example.com
验证 AD 用户的组成员资格:
$ id aduser@addomain.com uid=702801456(aduser@addomain.com) gid=63(audio) groups=63(audio)
其他资源
-
idoverrideuser 和 ipagroup
ansible-freeipa
上游文档 - 为 IdM 中的本地和远程组启用组合并