【发布时间】:2023-03-16 00:59:01
【问题描述】:
我正在尝试使用结构来自动化我在几台服务器上执行的一些管理工作。一般流程如下:
- SSH 与本地用户
- 运行:
sudo su -成为root(再次提供本地用户密码) - 以 root 身份完成工作 :)
不幸的是,使用run('sudo su -') 会阻止脚本的执行并允许用户输入。当我输入 exit 或 Ctrl+D 时,scipt 恢复,但没有 root 权限。
我在Switching user in Fabric 中看到了类似的问题,但我仅限于sudo su -,因为我不允许更改包含以下行的/etc/sudoers 文件:
localuser ALL = /usr/bin/su -
我浏览了 fabric 的来源,试图找到解决方法,但没有成功。
【问题讨论】:
-
使用
sudo_prefix='su - -c '如该帖子所述需要root密码。如果我使用sudo_prefix='sudo su - -c ',我会收到此错误消息Sorry, user localuser is not allowed to execute '/usr/bin/su - -c /bin/bash -l -c pwd' as root on hostname. -
设置
shell=False似乎没有效果。设置pty=False返回错误sudo: no tty present and no askpass program specified