繁体   English   中英

无法使用sudo用户运行Ansible

[英]Unable to run Ansible with sudo user

服务器上有一个用户userA ,可以访问sudo 我可以登录服务器并运行sudo su - userA切换到新用户。 但是,如果我使用Ansible,则会使我陷入错误:

致命的:[node1]:失败! => {“已更改”:false,“ module_stderr”:“与节点1的共享连接已关闭。\\ r \\ n”,“ module_stdout”:“ \\ r \\ n对不起,不允许用户abc执行'/ bin / sh -c以nodeA的用户身份回显BECOME-SUCCESS-pzwmlpcvzvwafleunmvpwioi; / usr / bin / python /var/tmp/ansible-tmp-1533926060.36-184244176073120/setup.py'作为userA。\\ r \\ n“,” msg“:”模块失败“, “ rc”:1}

Ansible文件:

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

我们无权访问sudoers文件。 有没有一种方法可以解决此问题而无需更改sudoers文件?

您可以在要与userA一起从userB运行chmod u+s file上设置SetUID 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: 

我依赖...如果sudoers配置允许运行/usr/bin/su - userA* (最后使用通配符允许-c参数),那么您可以通过以下方式向任务添加变为配置:

- 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 )选项运行ansible-playbook并连接用户密码(与sudo )。

前三个参数可以直接写为任务/播放的参数。


否则,您可能注定要运行带有所有缺点的expect模块(可能在控制器计算机上)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM