我们正在运行 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/apachectl
sudoers
/usr/sbin/apachectl
apachectl
答案2
您应该使用完整路径(根据评论)。
例如,/usr/sbin/apachectl
不只是apachectl
在脚本中!
这应该可以解决问题。