Red Hat Training

A Red Hat training course is available for RHEL 8

44.8. 使用 Ansible playbook 确保 IdM 客户端上的 IdM 用户具有 sudo 访问权限

在 Identity Management(IdM)中,您可以确保为特定 IdM 主机上的 IdM 用户帐户授予对特定命令的 sudo 访问权限。

完成此步骤以确保存在名为 idm_user_rebootsudo 规则。该规则授予 idm_useridmclient 计算机上运行 /usr/sbin/reboot 命令的权限。

先决条件

流程

  1. 创建一个清单文件,如 inventory.file,并在其中定义 ipaservers

    [ipaservers]
    server.idm.example.com
  2. 添加一个或多个 sudo 命令:

    1. 创建一个 ensure-reboot-sudocmd-is-present.yml Ansible playbook,以确保 sudo 命令的 IdM 数据库中存在 /usr/sbin/reboot 命令。要简化此步骤,您可以复制并修改 /usr/share/doc/ansible-freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml 文件中的示例:

      ---
      - name: Playbook to manage sudo command
        hosts: ipaserver
        become: true
      
        tasks:
        # Ensure sudo command is present
        - ipasudocmd:
            ipaadmin_password: MySecret123
            name: /usr/sbin/reboot
            state: present
    2. 运行 playbook:

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
  3. 创建引用命令的 sudo 规则:

    1. 创建一个 ensure-sudorule-for-idmuser-on-idmclient-is-present.yml Ansible playbook,以使用 sudo 命令条目来确保存在 sudo 规则。sudo 规则允许 idm_user 重新启动 idmclient 计算机。要简化此步骤,您可以复制并修改 /usr/share/doc/ansible-freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml 文件中的示例:

      ---
      - name: Tests
        hosts: ipaserver
        become: true
      
        tasks:
        # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient
        - ipasudorule:
            ipaadmin_password: MySecret123
            name: idm_user_reboot
            description: A test sudo rule.
            allow_sudocmd: /usr/sbin/reboot
            host: idmclient.idm.example.com
            user: idm_user
            state: present
    2. 运行 playbook:

      $ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml

验证步骤

验证 idm _user 能够使用 sudo 重新启动 idmclient,以此测试您在 IdM 服务器上确认其存在性的 sudo 规则是否在 idmclient 上工作。请注意,可能需要过几分钟后,服务器上所做的更改才会对客户端生效。

  1. idm_user 用户身份登录 idmclient
  2. 使用 sudo 重新启动计算机。在提示时输入 idm_user 的密码:

    $ sudo /usr/sbin/reboot
    [sudo] password for idm_user:

如果正确配置了 sudo,则计算机将重新启动。

其它材料

  • 有关如何使用 Ansible playbook 在 IdM 中应用 sudo 命令、命令组和规则的更多详细信息,请参阅 /usr/share/doc/ansible-freeipa/ 目录中的 README-sudocmdgroup.md 和 README-sudorule. md Markdown 文件。