通过 ansible 向用户授予 sudoers 权限

通过 ansible 向用户授予 sudoers 权限

我正在尝试向用户授予 sudo 权限doggy。为了实现这一点,我创建了一个 ansible 模板文件,该文件将登陆doggy-user.j2doggy /etc/sudoers.d/doggy-user -user.j2 中的内容:

doggy ALL=NOPASSWD: /bin/ls

我的 main.yaml 文件包含:

- name: Allow doggy user minimal sudo rights
  template:
    src: doggy-user.j2
    dest: /etc/sudoers.d/doggy-user
    owner: root
    group: root
    mode: 0440
notify: restart agent

但如果我应用此更改,我会在服务器端收到以下错误:

    >>> /etc/sudoers.d/doggy-user: syntax error near line 1 <<<
sudo: parse error in /etc/sudoers.d/doggy-user near line 1
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

请在这里帮助我如何以安全的方式创建 /etc/sudoers.d/doggy-user 并为用户提供适当的 sudo 权限doggy

答案1

使用 ansible 模板使用 user: root group: root mode: 0440 很难在 /etc/sudoers.d/ 下添加 sudoer 文件 更好的方法是先在 /etc/sudoers.d/ 中创建文件,然后复制内容。

- name: Create sudoer file for doggy-user
  file:
    path: "/etc/sudoers.d/doggy-user"
    state: touch
    mode: 0440
    owner: root
    group: root

- name: Add sudoers rules for doggy-user
  copy:
     dest: "/etc/sudoers.d/doggy-user"
     content: |
        doggy-user ALL=NOPASSWD: /bin/ls 
  notify: restart agent

相关内容