具有限制性许可的Ansible sudo';s

具有限制性许可的Ansible sudo';s,ansible,sudo,Ansible,Sudo,我们有一个用例,其中ssh用户test2被授予运行另一个用户test3拥有的特定脚本的权限。以下是/etc/sudoers文件中提供的权限 test2 ALL=(test3) NOPASSWD: /home/test3/start.sh 当我们运行ssh时,这很有效test2@target_hostsudo-u test3/home/test3/start.sh 我们希望通过ansible-been方法:sudo执行ssh任务,并成为_用户,但这是行不通的。我们发现,ansible在实际执行过

我们有一个用例,其中ssh用户test2被授予运行另一个用户test3拥有的特定脚本的权限。以下是
/etc/sudoers
文件中提供的权限

test2 ALL=(test3) NOPASSWD: /home/test3/start.sh
当我们运行
ssh时,这很有效test2@target_hostsudo-u test3/home/test3/start.sh

我们希望通过ansible-been
方法:sudo
执行ssh任务,并成为_用户,但这是行不通的。我们发现,ansible在实际执行过程中修改了指令,如下所示,这与sudoer文件上的权限不匹配

sudo -H -S -n  -u test3 /bin/sh -c '"'"'"'"'"'"'"'"'echo BECOME-SUCCESS-knavgwllrftljavwujkveyjcctlgkbda ; /usr/bin/python /var/tmp/ansible-tmp-1582478029.04-74694013835195/AnsiballZ_command.py'"'"'"'"'"'"'"'"' && sleep 0'"'"''
看起来我们唯一的选择是更新权限,如下所示,但这样会给test3用户提供完整的shell权限,这永远不会满足我们的安全需求

test2 ALL=(test3) NOPASSWD: /bin/sh

以前有人遇到过类似的情况吗?为了有控制的执行。请注意test2和test3是非sudo用户的。

因为您只需要
test2
用户就可以执行
test3
拥有的一个文件,那么只需授予
test2
读取和执行该文件(及其所在目录)的权限如何:


那么,你根本不需要
变成
之类的东西。

这能回答你的问题吗?这是ansible中权限提升的一个众所周知的限制<代码>权限升级必须是常规的
setfacl -m u:test2:rx /home/test3
setfacl -m u:test2:rx /home/test3/start.sh