我有一个包含脚本的目录:/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
工作但不是没有指定路径。
在 Ubuntu 上,配置为搜索文件中定义的
sudo
自己的程序,而不是调用用户或目标(root)用户的程序:secure_path
/etc/sudoers
PATH
如果您希望它在 /etc/scripts 中查找程序,则需要将该目录添加到
secure_path
. 但是,您可能要考虑使用已经存在的位置之一,secure_path
例如/usr/local/sbin
- 这将更符合Filesystem Hierarchy Standard。