不允许对非根用户执行Ansible chown操作

不允许对非根用户执行Ansible chown操作,ansible,chown,Ansible,Chown,我在Ansible剧本中有以下内容: - name: Create certificates directory file: dest: "{{ '~/wireguard/certs' | expanduser }}" state: directory owner: "{{ ansible_user_id }}" group: "{{ ansible_user_id }}" mode: 0700 run_once: true delegate_

我在Ansible剧本中有以下内容:

- name: Create certificates directory
  file:
    dest: "{{ '~/wireguard/certs' | expanduser }}"
    state: directory
    owner: "{{ ansible_user_id }}"
    group: "{{ ansible_user_id }}"
    mode: 0700
  run_once: true
  delegate_to: localhost
但是,当它在剧本中运行时,我得到以下错误:

fatal: [1.2.3.4 -> localhost]: FAILED! => {
  "changed": false,
  "gid": 1000,
  "group": "alex",
  "mode": "0755",
  "msg": "chown failed: [Errno 1] Operation not permitted: b'/home/alex/wireguard'",
  "owner": "alex",
  "path": "/home/alex/wireguard",
  "size": 4096,
  "state": "directory",
  "uid": 1000
}

我需要以root用户身份运行它吗?还是其他什么?如果我确实需要以root用户身份运行它,那么
是否变得有效?

我是否需要以root用户身份运行它,或者它是其他什么东西?

需要根。例如,见

超级用户root可以不受限制地更改任何文件的所有权,但普通用户只能更改其拥有的文件的所有权

这实际上意味着普通用户只能将他们拥有的文件组更改为他们所属的组

如果我确实需要以root用户身份运行它,它是否可以工作?

对。作品经常使用的是。用户的默认值为root

- file:
  become: yes
  become_method: sudo
  ...
通常,允许远程/登录用户成为root用户。但是在您的特定情况下,由于
委托给:localhost
,因此启用正在运行播放的用户。例如,本地主机上的更改


有关其他选项,请参阅。

我意识到,
ansible\u user\u id
没有我期望的用户名,因此我尝试将所有权更改为不存在的用户。我通过为本地用户设置一个新变量来修复它

$ grep alex /etc/sudoers
alex ALL=(ALL) NOPASSWD: ALL