linux 无法使用sudo用户运行Ansible

g6baxovj  于 2023-11-17  发布在  Linux
关注(0)|答案(3)|浏览(171)

我们在服务器上有一个用户userA,可以访问sudo。我可以登录到服务器并运行sudo su - userA切换到新用户。但是,如果我使用Ansible,它会向我抛出以下错误:
致命:[node1]:太棒了!=> {“changed”:false,“module_stderr”:“到节点1的共享连接已关闭。\r\n”,“模块_标准输出”:“\r\n抱歉,不允许用户abc在节点1上以用户A的身份执行'/bin/sh -c echo BECOME-SUCCESS-pzwmlpcvzvwafleunmvpwioi; /usr/bin/python /var/tmp/ansible-tmp-1533926060.36-184244176073120/setup.py'。\r\n”,“msg”:“MOOKING FAILURE”,“rc”:1}
Ansible文件:

---
- hosts: all
  become: yes
  become_user: userA
  become_method: sudo
  tasks:
      - name: Create file
        command: touch /home/userA/testing

字符串
我们无法访问sudoers文件。有没有办法在不更改sudoers文件的情况下解决这个问题?

busg9geu

busg9geu1#

如果sudoers的配置允许运行/usr/bin/su - userA*(在末尾有一个允许-c参数的后缀),那么你可以通过以下方式将become-configuration添加到你的任务中:

- name: Create file
  command: touch /home/userA/testing
  vars:
    ansible_become: true
    ansible_become_method: su
    ansible_become_user: userA
    ansible_become_exe: 'sudo -p "Password: " su -'

字符串
如果sudoers需要密码,则必须使用--ask-become-pass-K)选项和连接用户的密码(与sudo一样)运行ansible-playbook
前三个参数可以直接作为参数写入任务/播放。
否则,您可能注定要运行expect模块(可能在控制器机器上),并具有所有缺点。

mutmk8jj

mutmk8jj2#

你可以从userB在你想用UserA运行的文件上设置UID chmod u+s file。例如,/usr/bin/passwd是一个根文件,它有SetUID,所以,任何用户都可以在以root身份运行/usr/bin/passwd时更改自己的passwd(使用passwd命令)。

ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

passwd
Changing password for user user.
Changing password for user.
(current) UNIX password:

字符串

dhxwm5r4

dhxwm5r43#

如果您尝试以其他用户身份运行命令,可以尝试以下操作:

  • 成为:是
  • 用户名:userA
  • ansible_become_pass:userA

相关问题