Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有有限Sudo访问权限的特权Ansible命令_Ansible_Sudo - Fatal编程技术网

具有有限Sudo访问权限的特权Ansible命令

具有有限Sudo访问权限的特权Ansible命令,ansible,sudo,Ansible,Sudo,我正在尝试开发一个Ansible Playbook,它执行一系列维护步骤,例如更新操作系统和清理临时文件。其中一些命令(如reboot或systemd)需要root权限。Ansible文档表明,“成为”属性是提升访问权限的适当方式: - name: reboot the host become: true reboot: reboot_timeout: 120 不幸的是,执行playbook的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中以白色列出 我遇到

我正在尝试开发一个Ansible Playbook,它执行一系列维护步骤,例如更新操作系统和清理临时文件。其中一些命令(如reboot或systemd)需要root权限。Ansible文档表明,“成为”属性是提升访问权限的适当方式:

- name: reboot the host
  become: true
  reboot:
    reboot_timeout: 120
不幸的是,执行playbook的用户没有完全的sudo访问权限。相反,某些命令在sudoers文件中以白色列出

我遇到的问题是Ansible似乎使用/bin/sh执行所有提升的命令。具体来说,我检查并记录了的返回值,发现提升的命令似乎被包装到shell脚本中,如下所示:

sudo/bin/sh-c'echo成功sddadrnobshlgupsldsqcunalofnshjx/usr/bin/python/tmp/.ansible/tmp/ansible-tmp-1581373432.4900978-226016980552294/AnsiballZ_command.py
由于未向该用户授予通用提升shell访问权限,因此该步骤自然会失败。这是令人沮丧的,因为直接调用命令似乎确实有效:

- name: reboot the host
  command: sudo reboot
  async: 1
  poll: 0

- name: wait for connection
  wait_for_connection:
    connect_timeout: 20
    sleep: 5
    delay: 5
    timeout: 120

我想知道是否有更好的方法来解决这个问题,而不是不使用bevome或向有问题的用户提供完整的root访问权限。

这是一个已知且有文档记录的“使用Been的风险和限制”=>。谢谢,我在阅读文档时错过了这一部分。我想事情就是这样。