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

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

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

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

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

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

我该如何解决这个问题?

答案1

如果将 ALL 放在脚本之外,则将不允许脚本运行,除非可以在适当配置的 PATH 中找到它。

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

对于 sudo 来说,使用哪个 PATH 取决于环境的配置方式。

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

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

相关内容