sudo:没有 tty 存在并且没有指定 askpass 程序(尝试启动 apachectl)

sudo:没有 tty 存在并且没有指定 askpass 程序(尝试启动 apachectl)

我们正在运行 hudson 来监控几个 shell 作业。问题是 hudson 以用户“hudson”的身份运行所有作业。

没关系,除了一些需要超级用户权限的特殊命令,如“chown”和“apachectl”我们的 sudoers 文件中有以下内容:(visudo)

Defaults:hudson !requiretty
%hudson ALL = NOPASSWD: /usr/sbin/apachectl, /bin/chown

但是当我们想要在 shell 脚本中调用 apachectl -k graceful 时,会出现以下错误:

sudo: no tty present and no askpass program specified

有人知道我们该如何解决这个问题吗?

答案1

[从上面的评论移出]

您的脚本可能在之外的apachectl其他地方找到二进制文件。这将无法匹配您现有的条目。如果您使用显式路径调用命令(即,在脚本中使用,而不仅仅是),则可以确保您使用的是正确的路径。这通常是一种很好的做法。$PATH/usr/sbin/apachectlsudoers/usr/sbin/apachectlapachectl

答案2

您应该使用完整路径(根据评论)。

例如,/usr/sbin/apachectl不只是apachectl在脚本中!

这应该可以解决问题。

相关内容