我正在尝试在我的文件(在 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。