我试图从Ruby on Rails应用程序执行这样的命令:
sudo服务squid3重启
如果我试试这个代码:
output = ´sudo service squid3 retsart´
它不工作,在控制台我看到,Linux要求密码。 我怎样才能通过这个命令的密码? 或其他build议…
得到一个程序立即在命令行返回,所以它没有绑定到启动它的shell
带有“String1”而不是“String2”的文件的grep命令
为什么在新的服务器上PHP脚本的执行时间很长?
核心转储文件出现然后消失
编译libgcc xgcc错误
为什么bash没有按照短路命令的顺序来停止错误?
如何移动或调整X11窗口(即使它们被最大化)?
针对embedded式Linux的简单的C / C ++ FTP和SFTP客户端库推荐
Amazon AWS EC2 Linux上的Node-gyp Connect-mongo
Bash – 检查一个进程是否正在运行,否则启动它,并使用“开关”的情况下发送邮件
你可以尝试sudo -S标志(如果你的系统可用)(check man):
echo secretPasswd | sudo -S service squid3 restart
这意味着密码将被清除,因此您可以将需要执行任务的用户添加到sudoers(这会造成另一个安全问题)。
您可以将以下行添加到sudoers文件(/ etc / sudoers)
rails_user ALL=(root) nopASSWD:/usr/sbin/service
这基本上会让rails_user用户以sudo的身份执行服务命令,系统不会要求您输入密码。
rails_user应该替换为你正在运行你的rails进程的用户。 而且你也应该确保
Defaults requiretty
不在/ etc / sudoers中。 如果没有,您将无法使用脚本中的sudo。
您可以使用expect方法来捕获密码提示并发送密码。 不过,允许Rails用户使用/ etc / sudoers中的nopASSWD选项来访问服务命令而不使用密码可能更好。
你的sudo有一个-A开关吗?
-一个
通常,如果sudo需要密码,它将从当前终端读取。 如果指定-A (askpass)选项,则执行助手程序来读取用户的密码并将密码输出到标准输出。 如果设置了SUDO_ASKPASS环境变量,则指定辅助程序的路径。 否则,使用sudoers(5)中的askpass选项指定的值。
我不会建议以任何方式将密码提供给您的Web服务器进程,尽管如此,您还是要使用sudoers文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。