在documentation中,有一个使用lineinfile
模块编辑/etc/sudoers
的示例。
- lineinfile: "dest=/etc/sudoers state=present regexp='^%wheel' line='%wheel ALL=(ALL) NOPASSWD: ALL'"
感觉有点骇人听闻。
我以为
user
模块中会有一些东西可以解决这个问题,但是似乎没有任何选择。在
/etc/sudoers
中添加和删除用户的最佳实践是什么? 最佳答案
该行实际上并没有将用户添加到sudoers中,只是确保wheel
组可以对所有命令使用无密码sudo。
至于将用户添加到/etc/sudoers
中,最好的方法是将用户添加到必要的组中,然后为这些组提供对sudo的相关访问权限。当您也不使用Ansible时,也是如此。
user module允许您指定组的独占列表,或仅将指定的组附加到用户已经拥有的当前组中。这自然是幂等的,因为不能多次将用户定义为一个组。
一个示例游戏可能看起来像这样:
- hosts: all
vars:
sudoers:
- user1
- user2
- user3
tasks:
- name: Make sure we have a 'wheel' group
group:
name: wheel
state: present
- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
validate: visudo -cf %s
- name: Add sudoers users to wheel group
user:
name: "{{ item }}"
groups: wheel
append: yes
with_items: "{{ sudoers }}"