我目前从命令行执行以下操作:
$ ssh myuser@remote-server
password:
[myuser@remote-server ~]$ sudo su - dev_user
[dev_user@remote-server ~]$ whoami
dev_user
[dev_user@remote-server ~]$
Run Code Online (Sandbox Code Playgroud)
没有权限问题。
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')
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
fab abcd
What's your sudo password?
[sudo] password: Sorry, user myuser is not allowed to execute '/bin/bash -l -c whoami' as …Run Code Online (Sandbox Code Playgroud)