如何通过 Salt Stack 用 sed 替换 sudoers 文件中的注释行?

How to replace a commented line in sudoers file with sed via Salt Stack?

您好,我想更改我所有 Salt minions 的 /etc/sudoers 文件中的以下行。

# %wheel        ALL=(ALL)       NOPASSWD: ALL

具有以下内容:

%wheel          ALL=(ALL)       NOPASSWD: /usr/bin/salt*

到目前为止,我已经尝试了以下命令以及大量类似的命令,但略有不同 options/syntax:

sed -i '/# %wheel        ALL=(ALL)       NOPASSWD: ALL/c %wheel          ALL=(ALL)       NOPASSWD: /usr/bin/salt*' /etc/sudoers

我没有收到此特定命令的错误消息,但文件未更新。

谁能为我的特定用途提供正确的 option/syntax?

$ sed -i 's|# \(.*\)ALL|/usr/bin/salt*|' /etc/sudoers

使用以下 sed 表达式:

sed 's~^# *\(%wheel *ALL=(ALL) *.*\)ALL~/usr/bin/salt*~' /etc/sudoers

对于那些想知道如何通过 Salt(使用@CWLiu 的回答)针对所有 minions 运行 此命令的人,您必须添加以下内容:

salt -C 'G@roles:apiserver' cmd.run 'sed -i '"'"'s|# \(.*\)ALL|/usr/bin/salt*|'"'"' /etc/sudoers'

遵守 Salt Stack 的 cmd.run 语法