我目前通过命令行执行以下操作:
$ ssh myuser@remote-server
password:
[myuser@remote-server ~]$ sudo su - dev_user
[dev_user@remote-server ~]$ whoami
dev_user
[dev_user@remote-server ~]$
没有权限问题。
myuser有足够的权限来执行上述操作,但它没有执行sudo su -c whoami dev_user的权限。
我尝试了以下代码:
from fabric import Connection, task
@task
def abcd(ctx):
sudo_pass = getpass.getpass("What's your sudo password?")
config = Config(overrides={'sudo': {'password': sudo_pass}})
with Connection('dev-server', user='myuser', connect_kwargs={"password": sudo_pass}, config=config) as c:
c.sudo('/bin/bash -l -c whoami', user='dev_user')
我得到了以下输出:
fab abcd
What's your sudo password?
[sudo] password: Sorry, user myuser is not allowed to execute '/bin/bash -l -c whoami' as dev_user on dev-server.
有没有一种方法可以通过命令行来让 fabric 做我所做的事情?
编辑 sudoers 文件不是一个选项。
远程服务器是 Linux RH 7.6。
谢谢。