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 }}"

09-04 23:21