我们正在运行哈德森来监视几个shell作业。 问题是,哈德森运行所有的用户作为用户“哈德森”。
没关系,除了一些需要超级用户权限的特殊命令,比如“chown”和“apachectl”,我们有以下的sudoers文件:(visudo)
Defaults:hudson !requiretty %hudson ALL = NOPASSWD: /usr/sbin/apachectl, /bin/chown
但是当我们想在我们的shell脚本中调用apachectl -k优雅的时候,这给了我们以下的错误:
sudo: no tty present and no askpass program specified
有没有人有任何想法,我们如何解决这个问题?
[从上面的评论中移除]
您的脚本可能会在/usr/sbin/apachectl之外的$PATH其他位置findapachectl二进制文件。 这将无法匹配您现有的sudoers条目。 如果你用一个明确的path调用这个命令(例如,在脚本中使用/usr/sbin/apachectl ,而不是apachectl ),你可以确保你使用的是正确的。 总的来说这是一个很好的做法。
你应该使用完整的path(根据评论)。
例如/usr/sbin/apachectl不只是脚本中的apachectl !
这应该解决这个问题。