当谈到ssh,sudo和其他unix的东西时,我是一个n00b …所以在这里忍受着我。
我已经build立了一个rails网站,并且已经通过ssh部署了vlad。 这工作正常。 现在我需要让我的部署进程运行一个sudo命令来重新启动monit。
我基本上只是想运行“sudo monit reload”和“sudo monit start my_job_name”。 但是当我有vlad运行这些命令,我从ubuntu服务器得到错误:
sudo: no tty present and no askpass program specified
我已经做了一些谷歌search,我发现的大部分答案都涉及修改/etc/sudoers ,不需要我想要的命令的密码。 老实说,我不喜欢这个选项。 这似乎是一个黑客/解决方法,当我应该能够configuration我的服务器正确地要求密码,并有vlad提供密码(毕竟, ssh_password支持一个ssh_password设置,我已经填写)。
有人可以指点我正确的方向来configuration我的vlad脚本和我的Ubuntu 10.10服务器,以正确运行我的sudo命令?
尝试这个:
set :sudo_flags, sudo_flags << '-S' set :run_as_sudo, [sudo_cmd, sudo_flags].flatten.compact.join(' ')
对于你的命令:
run "#{run_as_sudo} cmd"
它应该在运行时提示您input密码。
您可以修改/etc/sudoers并删除requiretty选项,以便在没有tty可用时(例如,从cron作业,守护进程等)使sudo工作。 你不必允许无密码的sudo,只要删除这个选项。