sudo:不存在 tty 且未指定 askpass 程序(尝试启动 apachectl)

sol*_*sol 5 sudo hudson

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

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

Defaults:hudson !requiretty
%hudson ALL = NOPASSWD: /usr/sbin/apachectl, /bin/chown
Run Code Online (Sandbox Code Playgroud)

但是当我们想在我们的 shell 脚本中调用 apachectl -k graceful 时,这会给我们带来以下错误:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

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

lar*_*sks 2

[移自上面的评论]

您的脚本可能会apachectl在. 这将无法匹配您现有的条目。如果您使用显式路径调用命令(即在脚本中使用,而不仅仅是),您可以确保使用正确的路径。一般来说,这是一个很好的做法。$PATH/usr/sbin/apachectlsudoers/usr/sbin/apachectlapachectl