我有一个包含脚本的目录:/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/sudoers
PATH
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
- 这将与文件系统层次标准。