正则表达式模式用于编辑 /etc/sudoers 文件

10

我想从/etc/sudoers文件中删除(取消注释#)轮组,那么我应该使用什么正则表达式模式?

#cat /etc/sudoers
....
....
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

## Same thing without a password
# %wheel  ALL=(ALL)       NOPASSWD: ALL

....
....
我想从以下行中删除 #。
...
# %wheel  ALL=(ALL)       NOPASSWD: ALL
...

您可以在此线程中查看Alex G的答案:https://stackoverflow.com/questions/38849067/modify-etc-sudoers-with-sed。他成功使用`sed`编辑文件,然后使用`visudo`检查格式并保存更改。 - Jing He
3个回答

19

不应使用任何脚本编辑/etc/sudoers文件。之所以有visudo命令,是有原因的。sudoers文件的编辑应该是罕见且受到很好的控制。

话虽如此,如果您用vi编辑器运行visudo命令,则可以运行类似于:%s/^# %wheel/%wheel/的命令来取消注释所有以%wheel开头的行。

或者,如果你真的认为这是必要的:

sudo sed --in-place 's/^#\s*\(%wheel\s\+ALL=(ALL)\s\+NOPASSWD:\s\+ALL\)/\1/' /etc/sudoers

先不要使用--in-place参数运行该程序,以检查输出结果。 使用该选项需自负风险。


我知道!但我们有批量安装,我无法手动完成。只需要单行编辑,所以我不担心。 - Satish
是的,\s* 表示“零个或多个空格”。\s\+ 表示“一个或多个空格”。 - Tim Pote

7
以下内容应该可以正常工作:
sed -i 's/^#\s*\(%wheel\s*ALL=(ALL)\s*NOPASSWD:\s*ALL\)/\1/' /etc/sudoers

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接