首页 > 解决方案 > 以编程方式创建运行 ansible-playbook 的 sudo 规则

问题描述

我如何为正在使用的所有可能的命令创建一个列表,ansible-playbook以便我可以创建一个sudoers文件?

为了测试剧本,我暂时在以下位置创建了一个条目/etc/sudoers.d

tempuser ALL=(ALL:ALL) NOPASSWD:ALL

但是有没有一个插件或方法来获取命令列表,以便我以后可以创建一个类似的列表

tempuser ALL= NOPASSWD:  /bin/systemctl start  mariadb.service
...

有任何想法吗?

标签: ansiblesudosudoers

解决方案


如果您打算将权限提升与 ansible 一起使用,那么权限提升必须是通用的

您不能将特权升级权限限制为某些命令。Ansible 并不总是使用特定的命令来做某事,而是从每次更改的临时文件名运行模块(代码)。如果您有 '/sbin/service' 或 '/bin/chmod' 作为允许的命令,这将因 ansible 失败,因为这些路径与 Ansible 为运行模块创建的临时文件不匹配。如果您的安全规则将 sudo/pbrun/doas 环境限制为仅运行特定的命令路径,请从没有此限制的特殊帐户使用 Ansible,或使用 Red Hat Ansible Tower 管理对 SSH 凭证的间接访问。

如上述文档引用所示,这是该工具的一个众所周知的限制。如果这是您的环境中的问题,请查看文档引用中的上述建议解决方法,或者根本不使用 ansible。


推荐阅读