错误:sudo:需要密码\ r \ n-尽管用户对sudoers拥有权限

时间:2020-03-29 13:59:25

标签: linux permissions ansible couchbase

我正在尝试运行一个简单的Ansible剧本,其中显示了“主”目录的内容。

它运行成功,但是当我使用时:

become_user: "{{ TARGET_USER }}"

我收到错误消息:

 "sudo: a password is required\r\n"

“ Ansible用户”是“ blnapp1”,“目标用户”是“ couchbase”

我在sudoers文件中添加了对“ blnapp1”和“ couchbase”用户的权限,如下所示:

## Allow root to run any commands anywhere
root    ALL=(ALL) ALL 
blnapp1 ALL=(ALL) NOPASSWD: ALL
blnapp1 ALL=(ALL) ALL
ansible ALL= NOPASSWD: /home/blnapp1/playbook #path to playbook
couchbase ALL=(ALL) NOPASSWD: ALL
couchbase ALL=(ALL) ALL

我还将所有彼此的ssh公钥添加到/.ssh/authorized_keys

这是我的库存文件:

web1 ansible_host=**** ansible_connection=local

[couchbase-install:children]
couchbase_cluster_nodes
couchbase_server_nodes

[couchbase_cluster_nodes]
primary1 ansible_host=**** ansible_user=blnapp1 TARGET_USER=couchbase couchbase_primary_cluster_node=**** couchbase_cluster_admin_port=*** couchbase_bucket_name=exampleBucket group_server=default

[couchbase_server_nodes]

[all:vars]
#configuration_mode can be vars or cc
configuration_mode=vars
couchbase_data_path="/userdata/data/CB/var/lib/couchbase/data"
couchbase_index_path= "/userdata/data/CB/var/lib/couchbase/data"
yum_path="sudo /bin/yum"
#couchbase_admin="Administrator"
#couchbase_password="Administrator"

这是我的剧本:

---

- name: I-test
  hosts: primary1
  become: true
  become_user: "{{ TARGET_USER }}"

  tasks:
  - debug:
      msg: 'TARGET_USER is: "{{ TARGET_USER }}"'
  - name: show repo content
    shell: 
      cmd: ls -la /home

我发现的唯一方法是将“ blnapp1”用户添加到“ wheel”组。但是,我真的不希望“ blnapp1”具有“转轮”权限。

谢谢!

1 个答案:

答案 0 :(得分:0)

blnapp1 ALL=(ALL) NOPASSWD: ALL
blnapp1 ALL=(ALL) ALL

那两行基本上说明了完全相同的事情:让blnapp1以任何人的身份启动任何命令。但是第一个告诉sudo不要要求输入密码,而第二个则不需要。

并且在针对debian:buster码头工人映像进行快速测试之后,在这种情况下,它似乎只出现了遇到规则的最后一行,使得sudo总是要求输入密码。

只需删除sudoers文件中的第二行。请注意,您的couchbase用户遇到了完全相同的问题。