第 28 章 使用 sudo 系统角色
作为管理员,您可以使用 sudo
RHEL 系统角色在多个系统上一致地配置 /etc/sudoers
文件。
28.1. 使用 RHEL 系统角色应用自定义 sudoers
配置
您可以使用 sudo
RHEL 系统角色在受管节点上应用自定义 sudoers
配置。这样,您可以定义哪些用户可以在哪些主机上运行哪些命令,从而获得更好的配置效率和更精细的控制。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
步骤
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: "Configure sudo" hosts: managed-node-01.example.com tasks: - name: "Apply custom /etc/sudoers configuration" ansible.builtin.include_role: name: rhel-system-roles.sudo vars: sudo_sudoers_files: - path: "/etc/sudoers" user_specifications: - users: - <user_name> hosts: - <host_name> commands: - <path_to_command_binary>
playbook 中指定的设置包括:
users
- 规则适用的用户的列表。
hosts
-
规则适用的主机的列表。对于所有主机,您可以使用
ALL
。 commands
规则适用的命令的列表。对于所有命令,您可以使用
ALL
。有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.sudo/README.md
文件。
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
在受管节点上,验证 playbook 是否应用了新规则。
# cat /etc/sudoers | tail -n1 <user_name> <host_name>= <path_to_command_binary>
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.sudo/README.md
file -
/usr/share/doc/rhel-system-roles.sudo/sudo/
目录