第 21 章 使用 Ansible playbook 管理 sudo 访问权限
了解有关使用 Ansible playbook 在身份管理中管理用户 sudo 访问权限的更多信息。有关在身份管理中授予用户 sudo 访问权限的详情,请参阅 授予 IdM 客户端上 IdM 用户的 sudo 访问权限。
在身份管理(IdM)中,您可以确保对特定命令的 sudo 访问权限被授予给特定 IdM 主机上的 IdM 用户帐户。
完成此流程以确保名为 idm_user_reboot 的 sudo 规则存在。该规则授予 idm_user 在 idmclient 机器上运行 /usr/sbin/reboot 命令的权限。
先决条件
您已配置了 Ansible 控制节点以满足以下要求:
- 您在使用 Ansible 版本 2.15 或更高版本。
-
已安装
freeipa.ansible_freeipa集合。 - 示例假定在 ~/MyPlaybooks/ 目录中,您已创建了一个具有 IdM 服务器的完全限定域名(FQDN)的 Ansible 清单文件。
-
示例假定 secret.yml Ansible vault 存储了您的
ipaadmin_password,并且您可以访问存储了保护 secret.yml 文件的密码的文件。
-
目标节点(这是执行
freeipa.ansible_freeipa模块的节点)是作为 IdM 客户端、服务器或副本的 IdM 域的一部分。 - 您已确保 IdM 中存在 idm_user 用户帐户,并通过为用户创建密码解锁帐户。有关使用命令行添加新 IdM 用户的详情,请参阅 使用命令行添加用户。
-
idmclient 中没有本地 idm_user 帐户。idm_user 用户未列在 idmclient 上的
/etc/passwd文件中。
步骤
添加一个或多个
sudo命令:创建一个
ensure-reboot-sudocmd-is-present.ymlAnsible playbook,来确保sudo命令的 IdM 数据库中存在/usr/sbin/reboot命令。要简化此步骤,您可以复制并修改/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/sudocmd/ensure-sudocmd-is-present.yml文件中的示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建一个引用命令的
sudo规则:创建一个
ensure-sudorule-for-idmuser-on-idmclient-is-present.ymlAnsible playbook,来使用sudo命令条目确保存在 sudo 规则。sudo 规则允许 idm_user 重新启动 idmclient 机器。要简化此步骤,您可以复制并修改/usr/share/ansible/collections/ansible_collections/freeipa/ansible_freeipa/playbooks/sudorule/ensure-sudorule-is-present.yml文件中的示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
通过验证 idm_user 能够使用 sudo 重启 idmclient,来测试您在 IdM 服务器上确认其存在性的 sudo 规则是否在 idmclient 上可以工作。请注意,可能需要过几分钟后,服务器上所做的更改才会对客户端生效。
- 以 idm_user 用户身份登录到 idmclient。
使用
sudo重新启动计算机。在提示时输入 idm_user 的密码:sudo /usr/sbin/reboot
$ sudo /usr/sbin/reboot [sudo] password for idm_user:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果正确配置了 sudo,则机器将重启。