必须在面料中运行sudo。怎么克服这个?

时间:2015-11-18 08:18:36

标签: mono fastcgi fabric

我使用fabric通过命令运行fastcgi_mono服务:

sudo('/etc/init.d/fastcgi_mono restart', pty=False)

但是当我执行它时,它给了我这个错误:

[52.192.204.174] run: sudo /etc/init.d/fastcgi_mono restart
[52.192.204.174] out: sudo: sorry, you must have a tty to run sudo
[52.192.204.174] out: 


Warning: run() received nonzero return code 1 while executing 'sudo /etc/init.d/fastcgi_mono restart'!

我该如何解决这个问题?请帮忙。

2 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是,我不知道是否有更好的方法,但它在我的头脑中是有道理的:我在fabfile.py中设置了两个用户,ubuntu(具有sudo权限)和www-data(没有任何实际权利,只能在其“空格”(/ server / *)中添加/删除目录)。我总是使用ubuntu建立连接,这样我可以在需要时使用sudo()。当我需要在应用程序级别执行某些操作时,我称之为def deploy()我使用应用程序用户进行连接,因此我执行以下操作:

@settings(user='www-data')
def deploy():
    run('whoami')  # will say www-data

或者如果我需要在sudo()内进行某种deploy()我会这样做:

def deploy():
    sudo('whoami')  # will say ubuntu/root
    with settings(user='www-data'):
         run('whoami')  # will say www-data
         ... more code here

所以回顾一下:

  • 使用具有sudo访问权限的用户进行连接
  • 如果需要稍后将用户更改为更高级别的用户

答案 1 :(得分:0)

是的,我找到了答案。对于Amazon实例,您需要禁用requiretty

comment('/etc/sudoers', 'Defaults    requiretty', use_sudo=True)