通过 /etc/rc.local 或者 cfagent 执行 sudo 命令时,会得到这个错误,意思是执行sudo 的shell 需要一个控制终端。在 /etc/rc.local 或者 cfagent 中的命令,是没有控制终端的。

在 http://www.question-defense.com/2009/03/23/sudo-sorry-you-must-have-a-tty-to-run-sudo/上找到了答案,因为是英文的,总结其解决方案如下:

1. 编辑 /etc/sudoers

  1)Defaults    requiretty,修改为 #Defaults    requiretty,表示不需要控制终端。