如何在没有密码且不指定路径的情况下执行 sudo 命令?

如何在没有密码且不指定路径的情况下执行 sudo 命令?

我有一个包含脚本的目录:/etc/scripts。

现在我想要执行如下脚本:sudo scriptname 无需提供密码或指定脚本的路径。

我将 /etc/scripts 添加到 $PATH 变量中:

/etc/scripts:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

并且还将这些脚本的不同路径添加到我的 sudoers 文件底部,例如:

steven ALL=(ALL) NOPASSWD:/etc/scripts/dns_add_zone,/etc/scripts/dns_add_record

因此,执行脚本就像sudo /etc/scripts/scriptname这样,但不指定路径则不行。

答案1

在 Ubuntu 上,配置为在文件中定义的sudo其自己的中搜索程序,而不是调用用户或目标(root)用户的:secure_path/etc/sudoersPATH

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

如果您希望它在 /etc/scripts 中查找程序,则需要将该目录添加到secure_path。但是,您可能需要考虑使用 上已有的位置之一,secure_path例如/usr/local/sbin - 这将与文件系统层次标准

相关内容