我正在尝试为从 github 构建节点和 npm 的 EC2 实例构建用户数据脚本,然后启动服务。要润滑这些轮子,我需要添加:
:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
到 /etc/sudoers 中开始的行的末尾:
Defaults secure_path="
Run Code Online (Sandbox Code Playgroud)
https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands谈到使用 visudo 来实现这一点,但我想在 EC2 用户数据中以编程方式进行。
/sf/ask/1139795261/谈到了编辑 sudoers 文件,但对于我正在尝试的内容来说似乎太过分了达到。
我认为 grep 行并替换它很容易,但我很难过。不仅因为那个烦人的结束引号!
Ger*_*der 10
如果您可以接受替换secure_path值而不是附加值,则可以使用更简单的解决方案。通常 sudo 有一个 config 目录/etc/sudoers.d,您可以在其中放置其他配置文件。
只需在那里创建一个具有完整secure_path价值的文件:
Defaults secure_path="<default value>:/usr/local/bin"
Run Code Online (Sandbox Code Playgroud)
这会覆盖主配置中的值。如果所有机器的路径值都相同,则可以使用脚本或包轻松部署。
这还有一个额外的好处,即您不必在将来更新 sudo 包时检查并可能合并配置文件。