我已经创建了一个名为kafka的用户,我试图给它一个sudo访问权限,只运行/etc/init.d/kafka命令。
我通过Ansible向/etc/sudoers.d/kafka添加了以下条目:
kafka ALL = NOPASSWD: /etc/init.d/kafka
但是,这样做完全违背了以下错误:
/etc/sudoers.d/kafka:第1行附近的语法错误-- sudo:在/etc/sudoers.d/kafka中解析第1行附近的错误--:没有找到有效的sudoers源,quitting sudo:无法初始化策略插件
下面是完整的Ansible片段:
- name: Create kafka user's group
group:
name: "{{ kafka_group }}"
state: present
- name: Create kafka user
user:
name: "{{ kafka_user }}"
state: present
group: "{{ kafka_group }}"
shell: /bin/bash
- name: Set up password-less sudo for kafka user
copy:
content: "{{ kafka_user }} ALL = NOPASSWD: /etc/init.d/{{ kafka_service_name }}"
dest: "/etc/sudoers.d/{{ kafka_user }}"
owner: root
group: root
mode: 0440我做错了什么?
发布于 2016-07-26 06:53:10
"sudo:解析.中的错误“起源于/etc/sudoers或包含在#include <filename>或#includedir <path>指令中的任何文件,可能是由于该文件中最后一个条目上缺少新行所致。
发布于 2016-07-27 10:12:54
使用copy模块可能不是用Ansible处理/etc/sudoers的最佳选择。
线状模块可以在保存文件之前对文件进行验证。这也是更容易删除线等与该模块。
文档包含一个如何使用它的示例。
- name: Set up password-less sudo for kafka user
lineinfile: dest=/etc/sudoers state=present regexp='^%{{ kafka_user }} ALL\=' line='%{{ kafka_user }} ALL= NOPASSWD: /etc/init.d/{{ kafka_service_name }}' validate='visudo -cf %s'https://serverfault.com/questions/791945
复制相似问题