python - Ansible:维护 sudoer 列表的最佳实践

标签 python unix ansible user-management

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

关于python - Ansible:维护 sudoer 列表的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33359404/

相关文章:

python - 如何使用 numpy.char.join?

python - 根据其他两个数据框列中的值条件创建新列

linux - 我只想从 unix 文件中搜索字符串,前提是它后面跟着另一个字符串

unix - 如何在密码查询中检查节点值的数据类型?

pip - 如何在 MacOS Sierra 上使用 Brew 安装 Ansible 2.4.x

仅在需要升级时停止服务的 Ansible 方法

python - Pylint W0223 : Method . ..在类中是抽象的...但未被覆盖

python - 有人知道如何使用 Ruby 或 Python 在屏幕上显示内容(覆盖任何窗口)吗?

linux - 如何在创建时复制文件而不在 Unix/Linux 中破坏它

docker - 是否有将 ansible-playbook 转换为 Dockerfile 的工具?