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

s g*_* g 7 linux ubuntu sudo

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

%jenkins ALL=(ALL)NOPASSWD:/home/vts_share/test/sudotest.sh
Run Code Online (Sandbox Code Playgroud)

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

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

我该如何解决这个问题?

use*_*517 5

除非可以在适当配置的 PATH 中找到它,否则放置 ALL 而不是您的脚本将不允许它运行。

要在不提供完整路径的情况下运行您的命令,它需要位于 PATH 变量指定的目录中。

对于 sudo,它取决于环境如何配置为使用哪个 PATH。

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

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

  • 那将是 sudoers(8)。 (2认同)