如何避免在sudoers文件中指定完整path?

我试图在我的/etc/sudoers文件(在Ubuntu 12.04 LTS服务器上)中为sudotest.sh (或任何需要sudo的脚本/二进制文件)添加NOPASSWD条目,但为了使其工作,我必须指定满path。 以下条目工作得很好:

 %jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh 

问题是脚本可能会移动到不同的目录。 这似乎是一个很好的机会在path中使用*通配符(即/*/sudotest.sh ),以便我的脚本可以在任何目录中,但手册指出在path中使用通配符时不匹配/字符。 我已经确认它不起作用。

我知道我可以用ALL代替我的脚本,但这意味着没有任何密码提示对任何看起来不安全的命令。

我如何解决这个问题?

放置所有而不是脚本将不允许它运行,除非它可以在适当configuration的path中find。

要在不提供完整path的情况下运行您的命令,它需要位于由PATHvariables指定的目录中。

对于sudo,这取决于环境如何configuration使用哪个PATH。

如果在sudoers中设置了secure_pathvariables,则命令必须位于其中的目录中。

您可以将用户添加到exempt_group ,然后他们可以使用自己的PATH。