Операция chosable запрещена для пользователя без полномочий root - PullRequest
0 голосов
/ 21 июня 2019

У меня есть следующее в сборнике пьес 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

Однако, когда он запускается в playbook, я получаю следующую ошибку:

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, become работает?

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Я понял, что ansible_user_id не имеет ожидаемого имени пользователя, поэтому я пытался сменить владельца на пользователя, которого не было.Я исправил это, установив новую переменную для локального пользователя.

0 голосов
/ 22 июня 2019

Do I need to run this as root or is it something else?

Требуется root.См., Например, Изменение владельца

"У суперпользователя, root, есть неограниченная возможность изменять владельца любого файла, но обычные пользователи могут изменять владельца только тех файлов, которыеим принадлежит. "

Это практически означает, что обычные пользователи могут изменять только группу файла, которым они владеют, на группу, членом которой они являются.

If I do need to run it as root, does become work?

Да. становится работает.Часто используемым стать плагином является sudo .Значение по умолчанию становиться_пользователем является корневым.

- file:
  become: yes
  become_method: sudo
  ...

Как правило, разрешите удаленному пользователю или пользователю войти в систему как root.Но в вашем конкретном случае, из-за delegate_to: localhost, включите пользователя, который запускает игру.Например, измените в localhost

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

См. список плагинов для других опций.

...