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

如何通过Salt Stack将sudoers文件中的注释行替换为sed?,sed,comments,salt,sudoers,Sed,Comments,Salt,Sudoers,嗨,我想在我所有的盐仆的/etc/sudoers文件中更改以下行 # %wheel ALL=(ALL) NOPASSWD: ALL 以下是: %wheel ALL=(ALL) NOPASSWD: /usr/bin/salt* salt -C 'G@roles:apiserver' cmd.run 'sed -i '"'"'s|# \(.*\)ALL|\1/usr/bin/salt*|'"'"' /etc/sudoers' 到目前为止,

嗨,我想在我所有的盐仆的/etc/sudoers文件中更改以下行

# %wheel        ALL=(ALL)       NOPASSWD: ALL
以下是:

%wheel          ALL=(ALL)       NOPASSWD: /usr/bin/salt*
salt -C 'G@roles:apiserver' cmd.run 'sed -i '"'"'s|# \(.*\)ALL|\1/usr/bin/salt*|'"'"' /etc/sudoers'
到目前为止,我已经尝试了以下命令以及大量类似的命令,这些命令的选项/语法略有不同:

sed -i '/# %wheel        ALL=(ALL)       NOPASSWD: ALL/c %wheel          ALL=(ALL)       NOPASSWD: /usr/bin/salt*' /etc/sudoers
我并没有从这个特定的命令中得到错误消息,但是文件并没有更新

有人能为我的具体用途提供正确的选项/语法吗?

使用以下sed表达式:

$ sed -i 's|# \(.*\)ALL|\1/usr/bin/salt*|' /etc/sudoers
sed 's~^# *\(%wheel *ALL=(ALL) *.*\)ALL~\1/usr/bin/salt*~' /etc/sudoers
使用以下sed表达式:

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

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

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

为了遵守Salt Stack的cmd.run语法

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

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

为了遵守Salt Stack的cmd.run语法

感谢@RomanPerekhrest的响应,但是这将我的sudoers文件中的所有条目更新为#%wheelIt仍然被注释掉。感谢@RomanPerekhrest的响应,但是这将我的sudoers文件中的所有条目更新为#%wheelIt仍然被注释掉