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

时间:2012-05-02 19:54:29

标签: regex linux bash sed awk

我想在/ etc / sudoers文件中删除(uncommnet#)轮组,那么我应该使用的是什么样的Regex模式?

#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
...

3 个答案:

答案 0 :(得分:15)

您不应该使用任何类型的脚本编辑/etc/sudoers文件。 visudo命令有一个原因。对sudoers文件的编辑应该很少且控制得很好。

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

或者,如果您认为有必要:

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

首先运行它而不使用--in-place检查输出。使用它需要您自担风险。

答案 1 :(得分:3)

以下内容应该有效:

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

答案 2 :(得分:1)

无需使用sed。在centos上,您只需在function createFormSubmitTrigger(e) { var formResponse = e.response; var itemResponses = formResponse.getItemResponses(); var url = itemResponses[0].getResponse(); var formCopy = FormApp.openByUrl(url); ScriptApp.newTrigger('onFormSubmit').forForm(formCopy).onFormSubmit().create(); }

上创建文件
/etc/sudoers.d/

这将为echo 'myuser ALL=(ALL) NOPASSWD: ALL' >> ./myuser sudo chown root:root ./myuser sudo mv ./myuser /etc/sudoers.d/ 启用无密码的sudo。检查此以获得更多信息:https://unix.stackexchange.com/questions/375433/etc-sudoers-vs-etc-sudoers-d-file-for-enabling-sudo-for-a-user